From 6d9921ce4585bb9449793f032e4dbdf5c5e8aee3 Mon Sep 17 00:00:00 2001 From: dojutsu-user Date: Thu, 28 Feb 2019 22:05:59 +0530 Subject: [PATCH] make field readonly --- readthedocs/projects/forms.py | 12 ++++++++---- readthedocs/rtd_tests/tests/test_project_forms.py | 11 +++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index a32b6978df4..febd78ad57f 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -241,9 +241,13 @@ def __init__(self, *args, **kwargs): ) active_versions = self.get_all_active_versions() - self.fields['default_version'].widget = forms.Select( - choices=active_versions, - ) + + if active_versions: + self.fields['default_version'].widget = forms.Select( + choices=active_versions, + ) + else: + self.fields['default_version'].widget.attrs['readonly'] = True def clean_conf_py_file(self): filename = self.cleaned_data.get('conf_py_file', '').strip() @@ -269,7 +273,7 @@ def get_all_active_versions(self): version_qs = sort_version_aware(version_qs) all_versions = [(version.slug, version.verbose_name) for version in version_qs] return all_versions - return [()] + return None class UpdateProjectForm( diff --git a/readthedocs/rtd_tests/tests/test_project_forms.py b/readthedocs/rtd_tests/tests/test_project_forms.py index 20fced77f86..e762e4e237e 100644 --- a/readthedocs/rtd_tests/tests/test_project_forms.py +++ b/readthedocs/rtd_tests/tests/test_project_forms.py @@ -270,6 +270,17 @@ def test_list_all_versions_on_default_branch(self): }, ) + def test_default_version_field_if_no_active_version(self): + project_1 = get(Project) + project_1.versions.filter(active=True).update(active=False) + + # No active versions of project exists + self.assertFalse(project_1.versions.filter(active=True).exists()) + + form = ProjectAdvancedForm(instance=project_1) + self.assertTrue(form.fields['default_version'].widget.attrs['readonly']) + self.assertEqual(form.fields['default_version'].initial, 'latest') + class TestTranslationForms(TestCase):