Skip to content

Commit 3a3e863

Browse files
committed
Added file fields for a release's artefacts
This makes all the download links on the site more robust to changes like the one introduced with PEP625 which changed the casing of source and wheel files.
1 parent a59e8e5 commit 3a3e863

File tree

9 files changed

+546
-157
lines changed

9 files changed

+546
-157
lines changed
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{% load release_notes %}
2+
3+
<a href="{% url 'download-redirect' release.version 'tarball' %}">
4+
{{ release.tarball.name }}</a><br>
5+
{% if release.checksum %}
6+
Checksums: <a href="{% url 'download-redirect' release.version 'checksum' %}">
7+
{{ release.checksum.name }}</a><br>
8+
{% endif %}
9+
Release notes: {% release_notes release.version %}

Diff for: djangoproject/templates/releases/download.html

+6-24
Original file line numberDiff line numberDiff line change
@@ -290,20 +290,12 @@ <h2>Diamond and Platinum Members</h2>
290290
<h2>For the impatient:</h2>
291291
<ul>
292292
<li>Latest release:
293-
<a href="{% url 'download-redirect' current.version 'tarball' %}">
294-
Django-{{ current.version }}.tar.gz</a><br>
295-
Checksums: <a href="{% url 'download-redirect' current.version 'checksum' %}">
296-
Django-{{ current.version }}.checksum.txt</a><br>
297-
Release notes: {% release_notes current.version %}
293+
{% include "releases/_download_links.html" with release=current %}
298294
</li>
299295

300296
{% if preview %}
301297
<li>Preview release:
302-
<a href="{% url 'download-redirect' preview.version 'tarball' %}">
303-
Django-{{ preview.version }}.tar.gz</a><br>
304-
Checksums: <a href="{% url 'download-redirect' preview.version 'checksum' %}">
305-
Django-{{ preview.version }}.checksum.txt</a><br>
306-
Release notes: {% release_notes preview.version %}
298+
{% include "releases/_download_links.html" with release=preview %}
307299
</li>
308300
{% endif %}
309301
</ul>
@@ -315,19 +307,11 @@ <h2>Which version is better?</h2>
315307
<h2>Previous releases</h2>
316308
<ul>
317309
<li>Django {{ previous.version }}{% if previous.is_lts %} (LTS){% endif %}:
318-
<a href="{% url 'download-redirect' previous.version 'tarball' %}">
319-
Django-{{ previous.version }}.tar.gz</a><br>
320-
Checksums: <a href="{% url 'download-redirect' previous.version 'checksum' %}">
321-
Django-{{ previous.version }}.checksum.txt</a><br>
322-
Release notes: {% release_notes previous.version %}
310+
{% include "releases/_download_links.html" with release=previous %}
323311
</li>
324312
{% if lts %}
325313
<li>Django {{ lts.version }} (LTS):
326-
<a href="{% url 'download-redirect' lts.version 'tarball' %}">
327-
Django-{{ lts.version }}.tar.gz</a><br>
328-
Checksums: <a href="{% url 'download-redirect' lts.version 'checksum' %}">
329-
Django-{{ lts.version }}.checksum.txt</a><br>
330-
Release notes: {% release_notes lts.version %}
314+
{% include "releases/_download_links.html" with release=lts %}
331315
</li>
332316
{% endif %}
333317
</ul>
@@ -336,10 +320,8 @@ <h2>Unsupported previous releases (no longer receive security updates or bug fix
336320
<ul>
337321
{% for release in unsupported %}
338322
<li>Django {{ release.version }}:
339-
<a href="{% url 'download-redirect' release.version 'tarball' %}">
340-
Django-{{ release.version }}.tar.gz</a><br>
341-
Checksums: <a href="{% url 'download-redirect' release.version 'checksum' %}">
342-
Django-{{ release.version }}.checksum.txt</a></li>
323+
{% include "releases/_download_links.html" with release=release %}
324+
</li>
343325
{% endfor %}
344326
</ul>
345327

Diff for: legacy/fixtures/redirects-downloads.json.gz

-1.07 KB
Binary file not shown.

Diff for: releases/admin.py

+20
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,30 @@
1+
from django import forms
12
from django.contrib import admin
3+
from django.utils.safestring import mark_safe
24

35
from .models import Release
46

7+
_ARTIFACT_FILE_EXTENSIONS = {"tarball": ".tar.gz", "wheel": ".whl", "checksum": ".txt"}
8+
9+
10+
class ReleaseAdminForm(forms.ModelForm):
11+
def __init__(self, *args, **kwargs):
12+
super().__init__(*args, **kwargs)
13+
for fieldname, accept in _ARTIFACT_FILE_EXTENSIONS.items():
14+
self.fields[fieldname].widget.attrs["accept"] = accept
15+
self.fields["is_lts"].label = mark_safe(
16+
'<abbr title="Long Term Support">LTS</abbr> release'
17+
)
18+
519

620
@admin.register(Release)
721
class ReleaseAdmin(admin.ModelAdmin):
22+
fieldsets = [
23+
(None, {"fields": ["version", "is_lts"]}),
24+
("Dates", {"fields": ["date", "eol_date"]}),
25+
("Artifacts", {"fields": ["tarball", "wheel", "checksum"]}),
26+
]
27+
form = ReleaseAdminForm
828
list_display = (
929
"version",
1030
"is_lts",

0 commit comments

Comments
 (0)