Subdomains use HTTPS if settings specify
parent
be4ff5b9c4
commit
89e59e54ed
|
@ -83,6 +83,17 @@ Default: :djangosetting:`PUBLIC_DOMAIN`
|
|||
A special domain for serving public documentation.
|
||||
If set, public docs will be linked here instead of the `PRODUCTION_DOMAIN`.
|
||||
|
||||
|
||||
PUBLIC_DOMAIN_USES_HTTPS
|
||||
------------------------
|
||||
|
||||
Default: ``False``
|
||||
|
||||
If ``True`` and ``PUBLIC_DOMAIN`` is set, that domain will default to
|
||||
serving public documentation over HTTPS. By default, documentation is
|
||||
served over HTTP.
|
||||
|
||||
|
||||
ALLOW_ADMIN
|
||||
-----------
|
||||
|
||||
|
|
|
@ -144,9 +144,17 @@ class ResolverBase(object):
|
|||
version_slug = project.get_default_version()
|
||||
private = self._get_private(project, version_slug)
|
||||
|
||||
domain = self.resolve_domain(project, private=private)
|
||||
|
||||
# Use HTTPS if settings specify
|
||||
public_domain = getattr(settings, 'PUBLIC_DOMAIN', None)
|
||||
use_https = getattr(settings, 'PUBLIC_DOMAIN_USES_HTTPS', False)
|
||||
if use_https and public_domain and public_domain in domain:
|
||||
protocol = 'https'
|
||||
|
||||
return '{protocol}://{domain}{path}'.format(
|
||||
protocol=protocol,
|
||||
domain=self.resolve_domain(project, private=private),
|
||||
domain=domain,
|
||||
path=self.resolve_path(project, filename=filename, private=private,
|
||||
**kwargs),
|
||||
)
|
||||
|
|
|
@ -488,6 +488,19 @@ class ResolverTests(ResolverBase):
|
|||
url = resolve(project=self.pip, private=False)
|
||||
self.assertEqual(url, 'http://docs.foobar.com/en/latest/')
|
||||
|
||||
@override_settings(
|
||||
PRODUCTION_DOMAIN='readthedocs.org',
|
||||
PUBLIC_DOMAIN='readthedocs.io',
|
||||
PUBLIC_DOMAIN_USES_HTTPS=True,
|
||||
USE_SUBDOMAIN=True,
|
||||
)
|
||||
def test_resolver_domain_https(self):
|
||||
url = resolve(project=self.pip, private=True)
|
||||
self.assertEqual(url, 'https://pip.readthedocs.io/en/latest/')
|
||||
|
||||
url = resolve(project=self.pip, private=False)
|
||||
self.assertEqual(url, 'https://pip.readthedocs.io/en/latest/')
|
||||
|
||||
|
||||
class ResolverAltSetUp(object):
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ class CommunityBaseSettings(Settings):
|
|||
# Domains and URLs
|
||||
PRODUCTION_DOMAIN = 'readthedocs.org'
|
||||
PUBLIC_DOMAIN = None
|
||||
PUBLIC_DOMAIN_USES_HTTPS = False
|
||||
USE_SUBDOMAIN = False
|
||||
PUBLIC_API_URL = 'https://{0}'.format(PRODUCTION_DOMAIN)
|
||||
|
||||
|
|
Loading…
Reference in New Issue