From 12e6c076f5528bab3bb50d82758053d2b00cc7d1 Mon Sep 17 00:00:00 2001 From: santos22 Date: Sun, 10 May 2020 22:05:45 -0700 Subject: [PATCH 1/2] Hide unbuilt versions in footer flyout --- readthedocs/builds/querysets.py | 5 +- readthedocs/projects/models.py | 1 + readthedocs/rtd_tests/tests/test_footer.py | 59 +++++++++++++++++++++- 3 files changed, 63 insertions(+), 2 deletions(-) diff --git a/readthedocs/builds/querysets.py b/readthedocs/builds/querysets.py index 79f2362b6b3..ecaadd64d0e 100644 --- a/readthedocs/builds/querysets.py +++ b/readthedocs/builds/querysets.py @@ -24,7 +24,8 @@ def _add_user_repos(self, queryset, user): queryset = user_queryset | queryset return queryset - def public(self, user=None, project=None, only_active=True, include_hidden=True): + def public(self, user=None, project=None, only_active=True, + include_hidden=True, only_built=False): queryset = self.filter(privacy_level=constants.PUBLIC) if user: queryset = self._add_user_repos(queryset, user) @@ -32,6 +33,8 @@ def public(self, user=None, project=None, only_active=True, include_hidden=True) queryset = queryset.filter(project=project) if only_active: queryset = queryset.filter(active=True) + if only_built: + queryset = queryset.filter(built=True) if not include_hidden: queryset = queryset.filter(hidden=False) return queryset.distinct() diff --git a/readthedocs/projects/models.py b/readthedocs/projects/models.py index 5dd705c70b0..0006ccdd914 100644 --- a/readthedocs/projects/models.py +++ b/readthedocs/projects/models.py @@ -881,6 +881,7 @@ def ordered_active_versions(self, **kwargs): { 'project': self, 'only_active': True, + 'only_built': True, }, ) versions = ( diff --git a/readthedocs/rtd_tests/tests/test_footer.py b/readthedocs/rtd_tests/tests/test_footer.py index a77d4cbb1f0..568d89adeae 100644 --- a/readthedocs/rtd_tests/tests/test_footer.py +++ b/readthedocs/rtd_tests/tests/test_footer.py @@ -27,7 +27,7 @@ def setUp(self): privacy_level=PUBLIC, main_language_project=None, ) - self.pip.versions.update(privacy_level=PUBLIC) + self.pip.versions.update(privacy_level=PUBLIC, built=True) self.latest = self.pip.versions.get(slug=LATEST) self.url = ( @@ -224,6 +224,62 @@ def test_hidden_versions(self): self.assertIn('/en/latest/', response.data['html']) self.assertNotIn('/en/2.0/', response.data['html']) + def test_built_versions(self): + built_version = get( + Version, + slug='2.0', + active=True, + built=True, + privacy_level=PUBLIC, + project=self.pip, + ) + + # The built versions appears on the footer + self.url = ( + reverse('footer_html') + + f'?project={self.pip.slug}&version={self.latest.slug}&page=index&docroot=/' + ) + response = self.render() + self.assertIn('/en/latest/', response.data['html']) + self.assertIn('/en/2.0/', response.data['html']) + + # We can access the built version, and it appears on the footer + self.url = ( + reverse('footer_html') + + f'?project={self.pip.slug}&version={built_version.slug}&page=index&docroot=/' + ) + response = self.render() + self.assertIn('/en/latest/', response.data['html']) + self.assertIn('/en/2.0/', response.data['html']) + + def test_not_built_versions(self): + not_built_version = get( + Version, + slug='2.0', + active=True, + built=False, + privacy_level=PUBLIC, + project=self.pip, + ) + + # The un-built version doesn't appear on the footer + self.url = ( + reverse('footer_html') + + f'?project={self.pip.slug}&version={self.latest.slug}&page=index&docroot=/' + ) + response = self.render() + self.assertIn('/en/latest/', response.data['html']) + self.assertNotIn('/en/2.0/', response.data['html']) + + # We can access the unbuilt version, but it doesn't appear on the footer + self.url = ( + reverse('footer_html') + + f'?project={self.pip.slug}&version={not_built_version.slug}&page=index&docroot=/' + ) + response = self.render() + self.assertIn('/en/latest/', response.data['html']) + self.assertNotIn('/en/2.0/', response.data['html']) + class TestFooterHTML(BaseTestFooterHTML, TestCase): @@ -389,6 +445,7 @@ def test_version_queries(self): identifier=identifier, type=TAG, active=True, + built=True, ) with self.assertNumQueries(self.EXPECTED_QUERIES): From 19960dc2cf9b1b40245e9236c76336335c8fade0 Mon Sep 17 00:00:00 2001 From: santos22 Date: Sun, 10 May 2020 22:06:39 -0700 Subject: [PATCH 2/2] Fix test version class name --- readthedocs/api/v3/tests/test_versions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/api/v3/tests/test_versions.py b/readthedocs/api/v3/tests/test_versions.py index 3f112724a51..4ee2d95e95b 100644 --- a/readthedocs/api/v3/tests/test_versions.py +++ b/readthedocs/api/v3/tests/test_versions.py @@ -8,7 +8,7 @@ from readthedocs.projects.models import Project -class VerionsEndpointTests(APIEndpointMixin): +class VersionsEndpointTests(APIEndpointMixin): def test_projects_versions_list(self): self.client.credentials(HTTP_AUTHORIZATION=f'Token {self.token.key}')