From 48e034f75cdf2a8ca44ace86f8303ec046a94279 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mat=C3=ADas=20Aguirre?= Date: Wed, 22 Feb 2012 04:09:02 -0200 Subject: [PATCH] Per backend-settings option. --- social_auth/utils.py | 13 +++++++++++++ social_auth/views.py | 17 ++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/social_auth/utils.py b/social_auth/utils.py index 9f288ed..e0ab38c 100644 --- a/social_auth/utils.py +++ b/social_auth/utils.py @@ -89,6 +89,19 @@ def setting(name, default=None): return getattr(settings, name, default) +def backend_setting(backend, name, default=None): + """ + Looks for setting value following these rules: + 1. Search for prefixed setting + 2. Search for setting given by name + 3. Return default + """ + backend_name = backend.AUTH_BACKEND.name.upper().replace('-', '_') + return setting('%s_%s' % (backend_name, name)) or \ + setting(name) or \ + default + + logger = None if not logger: logging.basicConfig() diff --git a/social_auth/views.py b/social_auth/views.py index fa703f1..b278dc8 100644 --- a/social_auth/views.py +++ b/social_auth/views.py @@ -16,7 +16,7 @@ from django.contrib import messages from django.views.decorators.csrf import csrf_exempt from social_auth.backends import get_backend -from social_auth.utils import sanitize_redirect, setting, log +from social_auth.utils import sanitize_redirect, setting, log, backend_setting DEFAULT_REDIRECT = setting('SOCIAL_AUTH_LOGIN_REDIRECT_URL') or \ @@ -61,7 +61,8 @@ def dsa_view(redirect_name=None): log('warn', 'Messages framework not in place, some '+ 'errors have not been shown to the user.') - url = setting('SOCIAL_AUTH_BACKEND_ERROR_URL', LOGIN_ERROR_URL) + url = backend_setting(backend, 'SOCIAL_AUTH_BACKEND_ERROR_URL', + LOGIN_ERROR_URL) return HttpResponseRedirect(url) return wrapper return dec @@ -99,11 +100,12 @@ def associate_complete(request, backend, *args, **kwargs): user = auth_complete(request, backend, request.user, *args, **kwargs) if not user: - url = LOGIN_ERROR_URL + url = backend_setting(backend, 'LOGIN_ERROR_URL', LOGIN_ERROR_URL) elif isinstance(user, HttpResponse): return user else: - url = setting('SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL') or \ + url = backend_setting(backend, + 'SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL') or \ redirect_value or \ DEFAULT_REDIRECT return HttpResponseRedirect(url) @@ -115,7 +117,7 @@ def disconnect(request, backend, association_id=None): """Disconnects given backend from current logged in user.""" backend.disconnect(request.user, association_id) url = request.REQUEST.get(REDIRECT_FIELD_NAME, '') or \ - setting('SOCIAL_AUTH_DISCONNECT_REDIRECT_URL') or \ + backend_setting(backend, 'SOCIAL_AUTH_DISCONNECT_REDIRECT_URL') or \ DEFAULT_REDIRECT return HttpResponseRedirect(url) @@ -177,12 +179,13 @@ def complete_process(request, backend, *args, **kwargs): else: url = redirect_value or DEFAULT_REDIRECT else: - url = setting('SOCIAL_AUTH_INACTIVE_USER_URL', LOGIN_ERROR_URL) + url = backend_setting(backend, 'SOCIAL_AUTH_INACTIVE_USER_URL', + LOGIN_ERROR_URL) else: msg = setting('LOGIN_ERROR_MESSAGE', None) if msg: messages.error(request, msg) - url = LOGIN_ERROR_URL + url = backend_setting(backend, 'LOGIN_ERROR_URL', LOGIN_ERROR_URL) return HttpResponseRedirect(url) -- 2.39.5