allow overwriting oauth callback host and scheme for local testing

This commit is contained in:
Laura Klünder 2016-10-04 18:12:04 +02:00
parent de6c485a3f
commit 5174f6765c
2 changed files with 14 additions and 1 deletions

View file

@ -1,5 +1,7 @@
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from urllib.parse import urlparse, urlunparse
from django.conf import settings
from django.urls.base import reverse from django.urls.base import reverse
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -19,7 +21,16 @@ class Hoster(ABC):
return Package.objects.filter(home_repo__startswith=self.base_url) return Package.objects.filter(home_repo__startswith=self.base_url)
def _get_callback_uri(self, request): def _get_callback_uri(self, request):
return request.build_absolute_uri(reverse('editor.oauth.callback', kwargs={'hoster': self.name})) uri = request.build_absolute_uri(reverse('editor.oauth.callback', kwargs={'hoster': self.name}))
if settings.OAUTH_CALLBACK_SCHEME is None and settings.OAUTH_CALLBACK_NETLOC is None:
return uri
parts = list(urlparse(uri))
if settings.OAUTH_CALLBACK_SCHEME is not None:
parts[0] = settings.OAUTH_CALLBACK_SCHEME
if settings.OAUTH_CALLBACK_NETLOC is not None:
parts[1] = settings.OAUTH_CALLBACK_NETLOC
return urlunparse(parts)
def _get_session_data(self, request): def _get_session_data(self, request):
request.session.modified = True request.session.modified = True

View file

@ -51,6 +51,8 @@ DIRECT_EDITING = config.getboolean('c3nav', 'direct_editing', fallback=DEBUG)
PUBLIC_PACKAGES = [n for n in config.get('c3nav', 'public_packages', fallback='').split(',') if n] PUBLIC_PACKAGES = [n for n in config.get('c3nav', 'public_packages', fallback='').split(',') if n]
EDITOR_HOSTERS = OrderedDict((name[7:], data) for name, data in config.items() if name.startswith('hoster:')) EDITOR_HOSTERS = OrderedDict((name[7:], data) for name, data in config.items() if name.startswith('hoster:'))
OAUTH_CALLBACK_SCHEME = config.get('c3nav', 'oauth_callback_scheme')
OAUTH_CALLBACK_NETLOC = config.get('c3nav', 'oauth_callback_netloc')
db_backend = config.get('database', 'backend', fallback='sqlite3') db_backend = config.get('database', 'backend', fallback='sqlite3')
DATABASES = { DATABASES = {