Skip to content

Commit fc9cc47

Browse files
authored
Fixes #1658 Version gating does not handle 3.10 and later (#1766)
* Fixes #1658 Version gating does not handle 3.10 and later * Replace function with properties * Remove unused code * Copy paste fail
1 parent 8712df0 commit fc9cc47

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

downloads/models.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,27 @@ def get_version(self):
124124
return version.group(1)
125125
return None
126126

127+
def is_version_at_least(self, min_version_tuple):
128+
v1 = []
129+
for b in self.get_version().split('.'):
130+
try:
131+
v1.append(int(b))
132+
except ValueError:
133+
break
134+
# If v1 (us) is shorter than v2 (the comparand), it will always fail.
135+
# Add zeros for the comparison.
136+
while len(min_version_tuple) > len(v1):
137+
v1.append(0)
138+
return tuple(v1) >= min_version_tuple
139+
140+
@property
141+
def is_version_at_least_3_5(self):
142+
return self.is_version_at_least((3, 5))
143+
144+
@property
145+
def is_version_at_least_3_9(self):
146+
return self.is_version_at_least((3, 9))
147+
127148

128149
def update_supernav():
129150
latest_python3 = Release.objects.latest_python3()

downloads/tests/test_models.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,15 @@ def test_get_version_invalid(self):
7575
release = Release.objects.create(name=name)
7676
self.assertEqual(release.name, name)
7777
self.assertIsNone(release.get_version())
78+
79+
def test_is_version_at_least(self):
80+
self.assertFalse(self.release_275.is_version_at_least_3_5)
81+
self.assertFalse(self.release_275.is_version_at_least_3_9)
82+
83+
release_38 = Release.objects.create(name='Python 3.8.0')
84+
self.assertFalse(release_38.is_version_at_least_3_9)
85+
self.assert_(release_38.is_version_at_least_3_5)
86+
87+
release_310 = Release.objects.create(name='Python 3.10.0')
88+
self.assert_(release_310.is_version_at_least_3_9)
89+
self.assert_(release_310.is_version_at_least_3_5)

templates/downloads/os_list.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ <h2>Stable Releases</h2>
3939
<li>
4040
<a href="{{ r.get_absolute_url }}">{{ r.name }} - {{ r.release_date|date }}</a>
4141
{% if os.slug == 'windows' %}
42-
{% if r.name >= 'Python 3.9' %}
42+
{% if r.is_version_at_least_3_9 %}
4343
<p><strong>Note that {{ r.name }} <em>cannot</em> be used on Windows 7 or earlier.</strong></p>
44-
{% elif r.name >= 'Python 3.5' %}
44+
{% elif r.is_version_at_least_3_5 %}
4545
<p><strong>Note that {{ r.name }} <em>cannot</em> be used on Windows XP or earlier.</strong></p>
4646
{% endif %}
4747
{% endif %}

0 commit comments

Comments
 (0)