]> git.parisson.com Git - django-social-auth.git/commitdiff
Use messages framework if available. Refs gh-136
authorMatías Aguirre <matiasaguirre@gmail.com>
Mon, 29 Aug 2011 18:58:43 +0000 (15:58 -0300)
committerMatías Aguirre <matiasaguirre@gmail.com>
Mon, 29 Aug 2011 18:58:43 +0000 (15:58 -0300)
example/app/views.py
example/templates/error.html
social_auth/views.py

index c1046621bf3cfc564916f358bcf629832317b7fc..002e86c7fab29860b15e7a742419bc2c97d08f39 100644 (file)
@@ -1,9 +1,9 @@
-from django.conf import settings
 from django.http import HttpResponseRedirect
 from django.contrib.auth import logout as auth_logout
 from django.contrib.auth.decorators import login_required
 from django.template import RequestContext
 from django.shortcuts import render_to_response
+from django.contrib.messages.api import get_messages
 
 from social_auth import __version__ as version
 
@@ -25,9 +25,9 @@ def done(request):
 
 def error(request):
     """Error view"""
-    error_msg = request.session.pop(settings.SOCIAL_AUTH_ERROR_KEY, None)
+    messages = get_messages(request)
     return render_to_response('error.html', {'version': version,
-                                             'error_msg': error_msg},
+                                             'messages': messages},
                               RequestContext(request))
 
 def logout(request):
index e90ef46ab2b56acb477b345707ea4e507319d37b..ac4181d3f10cd39e543608cae7879323cfb080c8 100644 (file)
@@ -5,10 +5,17 @@
 {% block content %}
 <div>
   <p>Sorry but some error made you impossible to login.</p>
+
+  {% if messages %}
+    {% for msg in messages %}
+        <p class="error">{{ msg.message }} ({{ msg.extra_tags }})</p>
+    {% endfor %}
+  {% endif %}
   {% if error_msg %}
     <p>Details:</p>
     <p class="error">{{ error_msg }}</p>
   {% endif %}
+
   <p>Please try again <a href="/">Home</a></p>
 </div>
 {% endblock %}
index 6a7243bd3e356f06648226e9634b64433d400736..cb32e6832913364285b62d5c1db23d43556302f3 100644 (file)
@@ -36,7 +36,8 @@ ASSOCIATE_URL_NAME = _setting('SOCIAL_AUTH_ASSOCIATE_URL_NAME',
 SOCIAL_AUTH_LAST_LOGIN = _setting('SOCIAL_AUTH_LAST_LOGIN',
                                   'social_auth_last_login_backend')
 SESSION_EXPIRATION = _setting('SOCIAL_AUTH_SESSION_EXPIRATION', True)
-BACKEND_ERROR_REDIRECT = _setting('SOCIAL_AUTH_BACKEND_ERROR_URL')
+BACKEND_ERROR_REDIRECT = _setting('SOCIAL_AUTH_BACKEND_ERROR_URL',
+                                  LOGIN_ERROR_URL)
 ERROR_KEY = _setting('SOCIAL_AUTH_BACKEND_ERROR', 'socialauth_backend_error')
 NAME_KEY = _setting('SOCIAL_AUTH_BACKEND_KEY', 'socialauth_backend_name')
 
@@ -63,12 +64,17 @@ def dsa_view(redirect_name=None):
             try:
                 return func(request, backend, *args, **kwargs)
             except Exception, e:  # some error ocurred
-                if ERROR_KEY:
-                    # store error in session
-                    request.session[ERROR_KEY] = str(e)
-                if NAME_KEY:
-                    # store the backend name in the session for convenience
-                    request.session[NAME_KEY] = backend.AUTH_BACKEND.name
+                backend_name = backend.AUTH_BACKEND.name
+                msg = str(e)
+
+                if 'django.contrib.messages' in settings.INSTALLED_APPS:
+                    from django.contrib.messages.api import error
+                    error(request, msg, extra_tags=backend_name)
+                else:
+                    if ERROR_KEY:  # store error in session
+                        request.session[ERROR_KEY] = msg
+                    if NAME_KEY:  # store the backend name for convenience
+                        request.session[NAME_KEY] = backend_name
                 return HttpResponseRedirect(BACKEND_ERROR_REDIRECT)
         return wrapper
     return dec