]> git.parisson.com Git - django-social-auth.git/commitdiff
Per backend-settings option.
authorMatías Aguirre <matiasaguirre@gmail.com>
Wed, 22 Feb 2012 06:09:02 +0000 (04:09 -0200)
committerMatías Aguirre <matiasaguirre@gmail.com>
Wed, 22 Feb 2012 06:09:11 +0000 (04:09 -0200)
social_auth/utils.py
social_auth/views.py

index 9f288ed89c96e36564bbc2e72e46d956524cd749..e0ab38c6431d021475452a8648cb8943d619a59d 100644 (file)
@@ -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 <backend_name> 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()
index fa703f1903924bf6e86f4d76c6a0f2d825011896..b278dc8ffa9eadce3f7c7f446df82aaa9a109f7d 100644 (file)
@@ -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)