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.
|
A special domain for serving public documentation.
|
||||||
If set, public docs will be linked here instead of the `PRODUCTION_DOMAIN`.
|
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
|
ALLOW_ADMIN
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
|
|
@ -144,9 +144,17 @@ class ResolverBase(object):
|
||||||
version_slug = project.get_default_version()
|
version_slug = project.get_default_version()
|
||||||
private = self._get_private(project, version_slug)
|
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(
|
return '{protocol}://{domain}{path}'.format(
|
||||||
protocol=protocol,
|
protocol=protocol,
|
||||||
domain=self.resolve_domain(project, private=private),
|
domain=domain,
|
||||||
path=self.resolve_path(project, filename=filename, private=private,
|
path=self.resolve_path(project, filename=filename, private=private,
|
||||||
**kwargs),
|
**kwargs),
|
||||||
)
|
)
|
||||||
|
|
|
@ -488,6 +488,19 @@ class ResolverTests(ResolverBase):
|
||||||
url = resolve(project=self.pip, private=False)
|
url = resolve(project=self.pip, private=False)
|
||||||
self.assertEqual(url, 'http://docs.foobar.com/en/latest/')
|
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):
|
class ResolverAltSetUp(object):
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ class CommunityBaseSettings(Settings):
|
||||||
# Domains and URLs
|
# Domains and URLs
|
||||||
PRODUCTION_DOMAIN = 'readthedocs.org'
|
PRODUCTION_DOMAIN = 'readthedocs.org'
|
||||||
PUBLIC_DOMAIN = None
|
PUBLIC_DOMAIN = None
|
||||||
|
PUBLIC_DOMAIN_USES_HTTPS = False
|
||||||
USE_SUBDOMAIN = False
|
USE_SUBDOMAIN = False
|
||||||
PUBLIC_API_URL = 'https://{0}'.format(PRODUCTION_DOMAIN)
|
PUBLIC_API_URL = 'https://{0}'.format(PRODUCTION_DOMAIN)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue