Skip to content

Commit bf66e9d

Browse files
committed
Sort downloads table by version
1 parent 591b6e3 commit bf66e9d

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

downloads/tests/test_views.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,21 @@ def test_download(self):
5656
response = self.client.get(url)
5757
self.assertEqual(response.status_code, 200)
5858

59+
def test_download_releases_ordered_by_version(self):
60+
url = reverse("download:download")
61+
response = self.client.get(url)
62+
releases = response.context["releases"]
63+
self.assertEqual(
64+
releases,
65+
[
66+
self.python_3,
67+
self.python_3_10_18,
68+
self.python_3_8_20,
69+
self.python_3_8_19,
70+
self.release_275,
71+
],
72+
)
73+
5974
def test_latest_redirects(self):
6075
latest_python2 = Release.objects.released().python2().latest()
6176
url = reverse('download:download_latest_python2')

downloads/views.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,17 @@ def get_context_data(self, **kwargs):
124124
data['pymanager'] = latest_pymanager.download_file_for_os(o.slug)
125125
python_files.append(data)
126126

127+
def version_key(release: Release) -> tuple[int, ...]:
128+
try:
129+
return tuple(int(x) for x in release.get_version().split("."))
130+
except ValueError:
131+
return (0,)
132+
133+
releases = list(Release.objects.downloads())
134+
releases.sort(key=version_key, reverse=True)
135+
127136
context.update({
128-
'releases': Release.objects.downloads(),
137+
'releases': releases,
129138
'latest_python2': latest_python2,
130139
'latest_python3': latest_python3,
131140
'python_files': python_files,

templates/downloads/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ <h1 class="call-to-action">Download the latest version of Python</h1>
5050
<div class="row active-release-list-widget">
5151
{% render_active_banner %}
5252

53-
<h2 class="widget-title">Active Python Releases</h2>
53+
<h2 class="widget-title">Active Python releases</h2>
5454
<p class="success-quote"><a href="https://devguide.python.org/versions/#versions">For more information visit the Python Developer's Guide</a>.</p>
5555

5656
{% box 'downloads-active-releases' %}
@@ -74,7 +74,7 @@ <h2 class="widget-title">Looking for a specific release?</h2>
7474
<span class="release-number"><a href="{{ r.get_absolute_url }}">{{ r.name }}</a></span>
7575
<span class="release-date">{{ r.release_date|date }}</span>
7676
<span class="release-download"><a href="{{ r.get_absolute_url }}"><span aria-hidden="true" class="icon-download"></span> Download</a></span>
77-
<span class="release-enhancements"><a href="{{ r.release_notes_url }}">Release Notes</a></span>
77+
<span class="release-enhancements"><a href="{{ r.release_notes_url }}">Release notes</a></span>
7878
</li>
7979
{% endfor %}
8080
</ol>

0 commit comments

Comments
 (0)