From 65ef1bb243b559b1a6f05a882aec3fa89be25ed6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mat=C3=ADas=20Aguirre?= Date: Sun, 3 Jul 2011 17:43:53 -0300 Subject: [PATCH] Dynamic backend list on example app --- example/app/views.py | 27 ++++++++++++++++++++-- example/templates/done.html | 46 +++++++++++++------------------------ example/templates/home.html | 22 ++++++++++-------- 3 files changed, 54 insertions(+), 41 deletions(-) diff --git a/example/app/views.py b/example/app/views.py index 2e17cd6..8033c23 100644 --- a/example/app/views.py +++ b/example/app/views.py @@ -6,6 +6,7 @@ from django.template import RequestContext from django.shortcuts import render_to_response from social_auth import __version__ as version +from social_auth.backends import BACKENDS, OpenIdAuth, BaseOAuth, BaseOAuth2 def home(request): @@ -13,7 +14,9 @@ def home(request): if request.user.is_authenticated(): return HttpResponseRedirect('done') else: - return render_to_response('home.html', {'version': version}, + backends = grouped_backends() + return render_to_response('home.html', {'version': version, + 'backends': backends}, RequestContext(request)) @login_required @@ -21,7 +24,8 @@ def done(request): """Login complete view, displays user data""" ctx = {'accounts': request.user.social_auth.all(), 'version': version, - 'last_login': request.session.get('social_auth_last_login_backend')} + 'last_login': request.session.get('social_auth_last_login_backend'), + 'backends': grouped_backends()} return render_to_response('done.html', ctx, RequestContext(request)) def error(request): @@ -35,3 +39,22 @@ def logout(request): """Logs out user""" auth_logout(request) return HttpResponseRedirect('/') + + +def grouped_backends(): + """Group backends by type""" + backends = {'oauth': [], + 'oauth2': [], + 'openid': []} + + for name, backend in BACKENDS.iteritems(): + if issubclass(backend, BaseOAuth2): + key = 'oauth2' + elif issubclass(backend, BaseOAuth): + key = 'oauth' + elif issubclass(backend, OpenIdAuth): + key = 'openid' + else: + print name, backend + backends[key].append((name, backend)) + return backends diff --git a/example/templates/done.html b/example/templates/done.html index 74e2c34..1c99150 100644 --- a/example/templates/done.html +++ b/example/templates/done.html @@ -27,43 +27,29 @@ {% endif %} -

Associate new OAuth credentials:

+

Associate new OAuth credentials:

-

Associate new OAuth2 credentials:

+

Associate new OAuth2 credentials:

-

Associate new OpenID credentials:

+

Associate new OpenId credentials: