Skip to content

Commit 675b1a0

Browse files
authored
Merge pull request #6864 from readthedocs/remove-private-resolver
Remove private argument from resolver
2 parents 98755fd + 8cfe9c9 commit 675b1a0

File tree

8 files changed

+36
-71
lines changed

8 files changed

+36
-71
lines changed

readthedocs/builds/models.py

-5
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@
7777
GITLAB_URL,
7878
MEDIA_TYPES,
7979
PRIVACY_CHOICES,
80-
PRIVATE,
8180
)
8281
from readthedocs.projects.models import APIProject, Project
8382
from readthedocs.projects.version_handling import determine_stable_version
@@ -307,11 +306,9 @@ def get_absolute_url(self):
307306
'version_slug': self.slug,
308307
},
309308
)
310-
private = self.privacy_level == PRIVATE
311309
external = self.type == EXTERNAL
312310
return self.project.get_docs_url(
313311
version_slug=self.slug,
314-
private=private,
315312
external=external,
316313
)
317314

@@ -364,12 +361,10 @@ def supports_wipe(self):
364361
return not self.type == EXTERNAL
365362

366363
def get_subdomain_url(self):
367-
private = self.privacy_level == PRIVATE
368364
external = self.type == EXTERNAL
369365
return self.project.get_docs_url(
370366
version_slug=self.slug,
371367
lang_slug=self.project.language,
372-
private=private,
373368
external=external,
374369
)
375370

readthedocs/core/resolver.py

+15-26
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from django.conf import settings
77

88
from readthedocs.core.utils.extend import SettingsOverrideObject
9-
from readthedocs.projects.constants import PRIVATE
109
from readthedocs.builds.constants import EXTERNAL
1110

1211
log = logging.getLogger(__name__)
@@ -59,7 +58,6 @@ def base_resolve_path(
5958
filename,
6059
version_slug=None,
6160
language=None,
62-
private=False,
6361
single_version=None,
6462
subproject_slug=None,
6563
subdomain=None,
@@ -68,7 +66,6 @@ def base_resolve_path(
6866
"""Resolve a with nothing smart, just filling in the blanks."""
6967
# Only support `/docs/project' URLs outside our normal environment. Normally
7068
# the path should always have a subdomain or CNAME domain
71-
# pylint: disable=unused-argument
7269
if subdomain or cname or (self._use_subdomain()):
7370
url = '/'
7471
else:
@@ -100,16 +97,12 @@ def resolve_path(
10097
single_version=None,
10198
subdomain=None,
10299
cname=None,
103-
private=None,
104100
):
105101
"""Resolve a URL with a subset of fields defined."""
106102
cname = cname or project.get_canonical_custom_domain()
107103
version_slug = version_slug or project.get_default_version()
108104
language = language or project.language
109105

110-
if private is None:
111-
private, _ = self._get_private_and_external(project, version_slug)
112-
113106
filename = self._fix_filename(project, filename)
114107

115108
current_project = project
@@ -144,12 +137,10 @@ def resolve_path(
144137
single_version=single_version,
145138
subproject_slug=subproject_slug,
146139
cname=cname,
147-
private=private,
148140
subdomain=subdomain,
149141
)
150142

151-
def resolve_domain(self, project, private=None):
152-
# pylint: disable=unused-argument
143+
def resolve_domain(self, project):
153144
canonical_project = self._get_canonical_project(project)
154145
domain = canonical_project.get_canonical_custom_domain()
155146
if domain:
@@ -162,14 +153,14 @@ def resolve_domain(self, project, private=None):
162153

163154
def resolve(
164155
self, project, require_https=False, filename='', query_params='',
165-
private=None, external=None, **kwargs
156+
external=None, **kwargs
166157
):
167158
version_slug = kwargs.get('version_slug')
168159

169-
if private is None or external is None:
170-
if version_slug is None:
171-
version_slug = project.get_default_version()
172-
private, external = self._get_private_and_external(project, version_slug)
160+
if version_slug is None:
161+
version_slug = project.get_default_version()
162+
if external is None:
163+
external = self._is_external(project, version_slug)
173164

174165
canonical_project = self._get_canonical_project(project)
175166
custom_domain = canonical_project.get_canonical_custom_domain()
@@ -200,7 +191,7 @@ def resolve(
200191
protocol = 'https' if use_https_protocol else 'http'
201192

202193
path = self.resolve_path(
203-
project, filename=filename, private=private, **kwargs
194+
project, filename=filename, **kwargs
204195
)
205196
return urlunparse((protocol, domain, path, '', query_params, ''))
206197

@@ -247,16 +238,14 @@ def _get_project_subdomain(self, project):
247238
subdomain_slug = project.slug.replace('_', '-')
248239
return '{}.{}'.format(subdomain_slug, settings.PUBLIC_DOMAIN)
249240

250-
def _get_private_and_external(self, project, version_slug):
251-
from readthedocs.builds.models import Version
252-
try:
253-
version = project.versions.get(slug=version_slug)
254-
private = version.privacy_level == PRIVATE
255-
external = version.type == EXTERNAL
256-
except Version.DoesNotExist:
257-
private = settings.DEFAULT_PRIVACY_LEVEL == PRIVATE
258-
external = False
259-
return private, external
241+
def _is_external(self, project, version_slug):
242+
type_ = (
243+
project.versions
244+
.values_list('type', flat=True)
245+
.filter(slug=version_slug)
246+
.first()
247+
)
248+
return type_ == EXTERNAL
260249

261250
def _fix_filename(self, project, filename):
262251
"""

readthedocs/core/views/serve.py

-1
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,6 @@ def changefreqs_generator():
451451
href = project.get_docs_url(
452452
version_slug=version.slug,
453453
lang_slug=translation.language,
454-
private=False,
455454
)
456455
element['languages'].append({
457456
'hreflang': hreflang_formatter(translation.language),

readthedocs/projects/models.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ def delete(self, *args, **kwargs): # pylint: disable=arguments-differ
486486
def get_absolute_url(self):
487487
return reverse('projects_detail', args=[self.slug])
488488

489-
def get_docs_url(self, version_slug=None, lang_slug=None, private=None, external=False):
489+
def get_docs_url(self, version_slug=None, lang_slug=None, external=False):
490490
"""
491491
Return a URL for the docs.
492492
@@ -496,7 +496,6 @@ def get_docs_url(self, version_slug=None, lang_slug=None, private=None, external
496496
project=self,
497497
version_slug=version_slug,
498498
language=lang_slug,
499-
private=private,
500499
external=external,
501500
)
502501

readthedocs/proxito/tests/test_full.py

-6
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,6 @@ def test_sitemap_xml(self):
441441
self.project.get_docs_url(
442442
version_slug=version.slug,
443443
lang_slug=self.project.language,
444-
private=False,
445444
),
446445
)
447446

@@ -451,7 +450,6 @@ def test_sitemap_xml(self):
451450
self.project.get_docs_url(
452451
version_slug=private_version.slug,
453452
lang_slug=self.project.language,
454-
private=True,
455453
),
456454
)
457455
# The `translation` project doesn't have a version named `not-translated-version`
@@ -463,7 +461,6 @@ def test_sitemap_xml(self):
463461
self.project.get_docs_url(
464462
version_slug=not_translated_public_version.slug,
465463
lang_slug=translation.language,
466-
private=False,
467464
),
468465
)
469466
# hreflang should use hyphen instead of underscore
@@ -476,7 +473,6 @@ def test_sitemap_xml(self):
476473
self.project.get_docs_url(
477474
version_slug=external_version.slug,
478475
lang_slug=self.project.language,
479-
private=True,
480476
),
481477
)
482478

@@ -486,7 +482,6 @@ def test_sitemap_xml(self):
486482
self.project.get_docs_url(
487483
version_slug=stable_version.slug,
488484
lang_slug=self.project.language,
489-
private=False,
490485
),)
491486
self.assertEqual(response.context['versions'][0]['priority'], 1)
492487
self.assertEqual(response.context['versions'][0]['changefreq'], 'weekly')
@@ -497,7 +492,6 @@ def test_sitemap_xml(self):
497492
self.project.get_docs_url(
498493
version_slug='latest',
499494
lang_slug=self.project.language,
500-
private=False,
501495
),)
502496
self.assertEqual(response.context['versions'][1]['priority'], 0.9)
503497
self.assertEqual(response.context['versions'][1]['changefreq'], 'daily')

readthedocs/proxito/views/serve.py

-1
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,6 @@ def changefreqs_generator():
461461
href = project.get_docs_url(
462462
version_slug=version.slug,
463463
lang_slug=translation.language,
464-
private=False,
465464
)
466465
element['languages'].append({
467466
'hreflang': hreflang_formatter(translation.language),

readthedocs/rtd_tests/tests/test_doc_serving.py

-6
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,6 @@ def test_sitemap_xml(self):
284284
self.public.get_docs_url(
285285
version_slug=version.slug,
286286
lang_slug=self.public.language,
287-
private=False,
288287
),
289288
)
290289

@@ -294,7 +293,6 @@ def test_sitemap_xml(self):
294293
self.public.get_docs_url(
295294
version_slug=private_version.slug,
296295
lang_slug=self.public.language,
297-
private=True,
298296
),
299297
)
300298
# The `translation` project doesn't have a version named `not-translated-version`
@@ -306,7 +304,6 @@ def test_sitemap_xml(self):
306304
self.public.get_docs_url(
307305
version_slug=not_translated_public_version.slug,
308306
lang_slug=translation.language,
309-
private=False,
310307
),
311308
)
312309
# hreflang should use hyphen instead of underscore
@@ -319,7 +316,6 @@ def test_sitemap_xml(self):
319316
self.public.get_docs_url(
320317
version_slug=external_version.slug,
321318
lang_slug=self.public.language,
322-
private=True,
323319
),
324320
)
325321

@@ -329,7 +325,6 @@ def test_sitemap_xml(self):
329325
self.public.get_docs_url(
330326
version_slug=stable_version.slug,
331327
lang_slug=self.public.language,
332-
private=False,
333328
),)
334329
self.assertEqual(response.context['versions'][0]['priority'], 1)
335330
self.assertEqual(response.context['versions'][0]['changefreq'], 'weekly')
@@ -340,7 +335,6 @@ def test_sitemap_xml(self):
340335
self.public.get_docs_url(
341336
version_slug='latest',
342337
lang_slug=self.public.language,
343-
private=False,
344338
),)
345339
self.assertEqual(response.context['versions'][1]['priority'], 0.9)
346340
self.assertEqual(response.context['versions'][1]['changefreq'], 'daily')

readthedocs/rtd_tests/tests/test_resolver.py

+20-24
Original file line numberDiff line numberDiff line change
@@ -463,13 +463,6 @@ def test_domain_public(self):
463463
with override_settings(USE_SUBDOMAIN=True):
464464
url = resolve_domain(project=self.translation)
465465
self.assertEqual(url, 'pip.public.readthedocs.org')
466-
# Private overrides domain
467-
with override_settings(USE_SUBDOMAIN=False):
468-
url = resolve_domain(project=self.translation, private=True)
469-
self.assertEqual(url, 'readthedocs.org')
470-
with override_settings(USE_SUBDOMAIN=True):
471-
url = resolve_domain(project=self.translation, private=True)
472-
self.assertEqual(url, 'pip.public.readthedocs.org')
473466

474467
@override_settings(
475468
PRODUCTION_DOMAIN='readthedocs.org',
@@ -584,25 +577,28 @@ def test_resolver_subproject_alias(self):
584577

585578
@override_settings(PRODUCTION_DOMAIN='readthedocs.org')
586579
def test_resolver_private_project(self):
580+
self.pip.privacy_level = PRIVATE
581+
self.pip.save()
587582
with override_settings(USE_SUBDOMAIN=False):
588-
url = resolve(project=self.pip, private=True)
583+
url = resolve(project=self.pip)
589584
self.assertEqual(url, 'http://readthedocs.org/docs/pip/en/latest/')
590585
with override_settings(USE_SUBDOMAIN=True):
591-
url = resolve(project=self.pip, private=True)
586+
url = resolve(project=self.pip)
592587
self.assertEqual(url, 'http://pip.readthedocs.org/en/latest/')
593588

594589
@override_settings(PRODUCTION_DOMAIN='readthedocs.org')
595590
def test_resolver_private_project_override(self):
596591
self.pip.privacy_level = PRIVATE
592+
self.pip.save()
597593
with override_settings(USE_SUBDOMAIN=False):
598594
url = resolve(project=self.pip)
599595
self.assertEqual(url, 'http://readthedocs.org/docs/pip/en/latest/')
600-
url = resolve(project=self.pip, private=False)
596+
url = resolve(project=self.pip)
601597
self.assertEqual(url, 'http://readthedocs.org/docs/pip/en/latest/')
602598
with override_settings(USE_SUBDOMAIN=True):
603599
url = resolve(project=self.pip)
604600
self.assertEqual(url, 'http://pip.readthedocs.org/en/latest/')
605-
url = resolve(project=self.pip, private=False)
601+
url = resolve(project=self.pip)
606602
self.assertEqual(url, 'http://pip.readthedocs.org/en/latest/')
607603

608604
@override_settings(PRODUCTION_DOMAIN='readthedocs.org')
@@ -613,12 +609,12 @@ def test_resolver_private_version_override(self):
613609
with override_settings(USE_SUBDOMAIN=False):
614610
url = resolve(project=self.pip)
615611
self.assertEqual(url, 'http://readthedocs.org/docs/pip/en/latest/')
616-
url = resolve(project=self.pip, private=False)
612+
url = resolve(project=self.pip)
617613
self.assertEqual(url, 'http://readthedocs.org/docs/pip/en/latest/')
618614
with override_settings(USE_SUBDOMAIN=True):
619615
url = resolve(project=self.pip)
620616
self.assertEqual(url, 'http://pip.readthedocs.org/en/latest/')
621-
url = resolve(project=self.pip, private=False)
617+
url = resolve(project=self.pip)
622618
self.assertEqual(url, 'http://pip.readthedocs.org/en/latest/')
623619

624620
@override_settings(
@@ -627,16 +623,16 @@ def test_resolver_private_version_override(self):
627623
)
628624
def test_resolver_public_domain_overrides(self):
629625
with override_settings(USE_SUBDOMAIN=False):
630-
url = resolve(project=self.pip, private=True)
626+
url = resolve(project=self.pip)
631627
self.assertEqual(url, 'http://readthedocs.org/docs/pip/en/latest/')
632-
url = resolve(project=self.pip, private=False)
628+
url = resolve(project=self.pip)
633629
self.assertEqual(url, 'http://readthedocs.org/docs/pip/en/latest/')
634630
with override_settings(USE_SUBDOMAIN=True):
635-
url = resolve(project=self.pip, private=True)
631+
url = resolve(project=self.pip)
636632
self.assertEqual(
637633
url, 'http://pip.public.readthedocs.org/en/latest/',
638634
)
639-
url = resolve(project=self.pip, private=False)
635+
url = resolve(project=self.pip)
640636
self.assertEqual(
641637
url, 'http://pip.public.readthedocs.org/en/latest/',
642638
)
@@ -649,14 +645,14 @@ def test_resolver_public_domain_overrides(self):
649645
canonical=True,
650646
)
651647
with override_settings(USE_SUBDOMAIN=True):
652-
url = resolve(project=self.pip, private=True)
648+
url = resolve(project=self.pip)
653649
self.assertEqual(url, 'http://docs.foobar.com/en/latest/')
654-
url = resolve(project=self.pip, private=False)
650+
url = resolve(project=self.pip)
655651
self.assertEqual(url, 'http://docs.foobar.com/en/latest/')
656652
with override_settings(USE_SUBDOMAIN=False):
657-
url = resolve(project=self.pip, private=True)
653+
url = resolve(project=self.pip)
658654
self.assertEqual(url, 'http://docs.foobar.com/en/latest/')
659-
url = resolve(project=self.pip, private=False)
655+
url = resolve(project=self.pip)
660656
self.assertEqual(url, 'http://docs.foobar.com/en/latest/')
661657

662658
@override_settings(
@@ -666,14 +662,14 @@ def test_resolver_public_domain_overrides(self):
666662
)
667663
def test_resolver_domain_https(self):
668664
with override_settings(PUBLIC_DOMAIN_USES_HTTPS=True):
669-
url = resolve(project=self.pip, private=True)
665+
url = resolve(project=self.pip)
670666
self.assertEqual(url, 'https://pip.readthedocs.io/en/latest/')
671667

672-
url = resolve(project=self.pip, private=False)
668+
url = resolve(project=self.pip)
673669
self.assertEqual(url, 'https://pip.readthedocs.io/en/latest/')
674670

675671
with override_settings(PUBLIC_DOMAIN_USES_HTTPS=False):
676-
url = resolve(project=self.pip, private=True)
672+
url = resolve(project=self.pip)
677673
self.assertEqual(url, 'http://pip.readthedocs.io/en/latest/')
678674

679675

0 commit comments

Comments
 (0)