Skip to content

Commit d351c21

Browse files
authored
Merge pull request #5157 from dojutsu-user/version-sorted
Sort versions smartly everywhere
2 parents aace732 + f68ca0e commit d351c21

File tree

3 files changed

+21
-21
lines changed

3 files changed

+21
-21
lines changed

readthedocs/projects/forms.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from readthedocs.oauth.models import RemoteRepository
2323
from readthedocs.projects import constants
2424
from readthedocs.projects.exceptions import ProjectSpamError
25+
from readthedocs.projects.templatetags.projects_tags import sort_version_aware
2526
from readthedocs.projects.models import (
2627
Domain,
2728
EmailHook,
@@ -235,9 +236,7 @@ def __init__(self, *args, **kwargs):
235236
choices=[default_choice] + list(all_versions),
236237
)
237238

238-
active_versions = self.instance.all_active_versions().values_list(
239-
'slug', 'verbose_name'
240-
) # yapf: disabled
239+
active_versions = self.get_all_active_versions()
241240
self.fields['default_version'].widget = forms.Select(
242241
choices=active_versions,
243242
)
@@ -253,6 +252,21 @@ def clean_conf_py_file(self):
253252
) # yapf: disable
254253
return filename
255254

255+
def get_all_active_versions(self):
256+
"""
257+
Returns all active versions.
258+
259+
Returns a smartly sorted list of tuples.
260+
First item of each tuple is the version's slug,
261+
and the second item is version's verbose_name.
262+
"""
263+
version_qs = self.instance.all_active_versions()
264+
if version_qs.exists():
265+
version_qs = sort_version_aware(version_qs)
266+
all_versions = [(version.slug, version.verbose_name) for version in version_qs]
267+
return all_versions
268+
return [()]
269+
256270

257271
class UpdateProjectForm(
258272
ProjectTriggerBuildMixin,
@@ -429,12 +443,14 @@ def build_versions_form(project):
429443
versions_qs = project.versions.all() # Admin page, so show all versions
430444
active = versions_qs.filter(active=True)
431445
if active.exists():
446+
active = sort_version_aware(active)
432447
choices = [(version.slug, version.verbose_name) for version in active]
433448
attrs['default-version'] = forms.ChoiceField(
434449
label=_('Default Version'),
435450
choices=choices,
436451
initial=project.get_default_version(),
437452
)
453+
versions_qs = sort_version_aware(versions_qs)
438454
for version in versions_qs:
439455
field_name = 'version-{}'.format(version.slug)
440456
privacy_name = 'privacy-{}'.format(version.slug)

readthedocs/projects/views/public.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from readthedocs.builds.views import BuildTriggerMixin
2727
from readthedocs.projects.models import Project
2828
from readthedocs.search.indexes import PageIndex
29+
from readthedocs.projects.templatetags.projects_tags import sort_version_aware
2930
from readthedocs.search.views import LOG_TEMPLATE
3031

3132
from .base import ProjectOnboardMixin
@@ -171,6 +172,7 @@ def project_downloads(request, project_slug):
171172
slug=project_slug,
172173
)
173174
versions = Version.objects.public(user=request.user, project=project)
175+
versions = sort_version_aware(versions)
174176
version_data = OrderedDict()
175177
for version in versions:
176178
data = version.get_downloads()

readthedocs/templates/core/version_list.html

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)