Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions apps/downloads/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import datetime as dt
from unittest import mock

from django.conf import settings
Expand Down Expand Up @@ -82,6 +83,20 @@ def test_download_release_detail_superseded(self):
self.assertContains(response, "has been superseded by")
self.assertContains(response, latest_release.name)

def test_download_release_detail_draft_not_superseded(self):
"""Test that an unpublished (draft) release does not show a superseded notice."""
draft = Release.objects.create(
version=Release.PYTHON3,
name="Python 3.10.20",
is_published=False,
release_date=dt.datetime.fromisoformat("2025-12-02T00:00Z"),
)
url = reverse("download:download_release_detail", kwargs={"release_slug": draft.slug})
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertNotIn("latest_in_series", response.context)
self.assertNotContains(response, "has been superseded by")

def test_download_os_list(self):
url = reverse("download:download_os_list", kwargs={"slug": self.linux.slug})
response = self.client.get(url)
Expand Down
5 changes: 3 additions & 2 deletions apps/downloads/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,9 +239,10 @@ def get_context_data(self, **kwargs):
context["release_files"].extend(list(self.object.files.exclude(os__slug="source").order_by("os__slug", "name")))

# Find the latest release in the feature series (such as 3.14.x)
# to show a "superseded by" notice on older releases
# to show a "superseded by" notice on older releases.
# Unpublished (draft) releases are not yet out, so they can't be superseded.
version = self.object.get_version()
if version and self.object.version == Release.PYTHON3:
if version and self.object.is_published and self.object.version == Release.PYTHON3:
match = re.match(r"^3\.(\d+)", version)
if match:
minor_version = int(match.group(1))
Expand Down
Loading