From 82944cad1d1d7e6a300aa5cc55666196791d5950 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Thu, 21 Mar 2019 22:21:28 -0500 Subject: [PATCH 1/9] Fix extra origin in urls `verbose_name` is unique in each project, because we only have one remote. `identifier` includes origin for branches and also it can point to the same commit in tags. Fixes #5518 --- readthedocs/projects/forms.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index 74ee3d15f5d..4dcabadfab0 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -232,11 +232,11 @@ def __init__(self, *args, **kwargs): default_choice = (None, '-' * 9) all_versions = self.instance.versions.values_list( - 'identifier', 'verbose_name', + flat=True ) self.fields['default_branch'].widget = forms.Select( - choices=[default_choice] + list(all_versions), + choices=[default_choice] + list(zip(all_versions, all_versions)), ) active_versions = self.get_all_active_versions() From e84bc96c2fe9f7b04832d9210f2a3026fb4a5b7b Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Thu, 21 Mar 2019 22:32:16 -0500 Subject: [PATCH 2/9] Fix tests --- readthedocs/rtd_tests/tests/test_project_forms.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/readthedocs/rtd_tests/tests/test_project_forms.py b/readthedocs/rtd_tests/tests/test_project_forms.py index e762e4e237e..f8603ef818c 100644 --- a/readthedocs/rtd_tests/tests/test_project_forms.py +++ b/readthedocs/rtd_tests/tests/test_project_forms.py @@ -16,6 +16,7 @@ ) from readthedocs.projects.exceptions import ProjectSpamError from readthedocs.projects.forms import ( + EmailHookForm, EnvironmentVariableForm, ProjectAdvancedForm, ProjectBasicsForm, @@ -23,7 +24,6 @@ TranslationForm, UpdateProjectForm, WebHookForm, - EmailHookForm ) from readthedocs.projects.models import EnvironmentVariable, Project @@ -201,6 +201,7 @@ def setUp(self): active=True, privacy_level=PUBLIC, identifier='public-1', + verbose_name='public-1', ) get( Version, @@ -209,6 +210,7 @@ def setUp(self): active=True, privacy_level=PUBLIC, identifier='public-2', + verbose_name='public-2', ) get( Version, @@ -217,6 +219,7 @@ def setUp(self): active=False, privacy_level=PROTECTED, identifier='public-3', + verbose_name='public-3', ) get( Version, @@ -225,6 +228,7 @@ def setUp(self): active=False, privacy_level=PUBLIC, identifier='public/4', + verbose_name='public/4', ) get( Version, @@ -233,6 +237,7 @@ def setUp(self): active=True, privacy_level=PRIVATE, identifier='private', + verbose_name='private', ) get( Version, @@ -241,6 +246,7 @@ def setUp(self): active=True, privacy_level=PROTECTED, identifier='protected', + verbose_name='protected', ) def test_list_only_active_versions_on_default_version(self): From ce4d46ed4e580224bc8f3085e7ab66e4e5239577 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Mon, 25 Mar 2019 12:35:53 -0500 Subject: [PATCH 3/9] Use commit_name --- readthedocs/projects/forms.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index 3382439d6d0..dc534855f0f 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -241,12 +241,16 @@ def __init__(self, *args, **kwargs): ) default_choice = (None, '-' * 9) - all_versions = self.instance.versions.values_list( + all_versions = self.instance.versions.only( + # commit_name only needs access to this attributes + 'slug', 'verbose_name', - flat=True ) self.fields['default_branch'].widget = forms.Select( - choices=[default_choice] + list(zip(all_versions, all_versions)), + choices=( + [default_choice] + + [(v.commit_name, v.verbose_name) for v in all_versions] + ), ) active_versions = self.get_all_active_versions() From de088c9dc3460ab7d8dba1844c2f565e63ee00ea Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Mon, 25 Mar 2019 12:36:57 -0500 Subject: [PATCH 4/9] Typo --- readthedocs/projects/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index dc534855f0f..8a53cdc8cc0 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -242,7 +242,7 @@ def __init__(self, *args, **kwargs): default_choice = (None, '-' * 9) all_versions = self.instance.versions.only( - # commit_name only needs access to this attributes + # commit_name only needs access to these attributes 'slug', 'verbose_name', ) From cf6ef101f77ac6724362e34f1a64ea235d5f0fd9 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Mon, 25 Mar 2019 12:39:01 -0500 Subject: [PATCH 5/9] Type is needed too --- readthedocs/projects/forms.py | 1 + 1 file changed, 1 insertion(+) diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index 8a53cdc8cc0..eb5588ba9f4 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -244,6 +244,7 @@ def __init__(self, *args, **kwargs): all_versions = self.instance.versions.only( # commit_name only needs access to these attributes 'slug', + 'type', 'verbose_name', ) self.fields['default_branch'].widget = forms.Select( From 3a0d7fb6e90b894186bf3f5e260b271326f3b194 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Mon, 25 Mar 2019 12:41:35 -0500 Subject: [PATCH 6/9] Refactor --- readthedocs/projects/forms.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index eb5588ba9f4..2413bc9f16d 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -241,17 +241,12 @@ def __init__(self, *args, **kwargs): ) default_choice = (None, '-' * 9) - all_versions = self.instance.versions.only( - # commit_name only needs access to these attributes - 'slug', - 'type', - 'verbose_name', - ) + all_versions_choices = [ + (v.commit_name, v.verbose_name) + for v in self.instance.versions + ] self.fields['default_branch'].widget = forms.Select( - choices=( - [default_choice] + - [(v.commit_name, v.verbose_name) for v in all_versions] - ), + choices=([default_choice] + all_versions_choices), ) active_versions = self.get_all_active_versions() From 0f20d76870cc9d008397230f7e4fc253ac03bd1f Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Mon, 25 Mar 2019 12:50:31 -0500 Subject: [PATCH 7/9] Forgot about the all --- readthedocs/projects/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index 2413bc9f16d..cc39749c9ad 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -243,7 +243,7 @@ def __init__(self, *args, **kwargs): default_choice = (None, '-' * 9) all_versions_choices = [ (v.commit_name, v.verbose_name) - for v in self.instance.versions + for v in self.instance.versions.all() ] self.fields['default_branch'].widget = forms.Select( choices=([default_choice] + all_versions_choices), From 8f40c68f04f20b1d1ffa3919609a378a087519e3 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Mon, 25 Mar 2019 12:51:55 -0500 Subject: [PATCH 8/9] No parenthesis --- readthedocs/projects/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index cc39749c9ad..dfe065ba8fb 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -246,7 +246,7 @@ def __init__(self, *args, **kwargs): for v in self.instance.versions.all() ] self.fields['default_branch'].widget = forms.Select( - choices=([default_choice] + all_versions_choices), + choices=[default_choice] + all_versions_choices, ) active_versions = self.get_all_active_versions() From 123819789d238bb09927ab6ec1fe2e8c8141d03c Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Wed, 27 Mar 2019 16:25:31 -0500 Subject: [PATCH 9/9] Comment --- readthedocs/projects/forms.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index dfe065ba8fb..e5e32d06dbc 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -241,6 +241,8 @@ def __init__(self, *args, **kwargs): ) default_choice = (None, '-' * 9) + # commit_name is used as the id because it handles + # the special cases of LATEST and STABLE. all_versions_choices = [ (v.commit_name, v.verbose_name) for v in self.instance.versions.all()