From 2868aab97632fff7ba2754a94c8b520c89bcb4b6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mat=C3=ADas=20Aguirre?= Date: Mon, 14 Nov 2011 13:35:05 -0200 Subject: [PATCH] Don't incude OpenId backend if disabled. Closes gh-179 --- social_auth/backends/__init__.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/social_auth/backends/__init__.py b/social_auth/backends/__init__.py index a3c9ca1..649bdd1 100644 --- a/social_auth/backends/__init__.py +++ b/social_auth/backends/__init__.py @@ -17,6 +17,7 @@ from os.path import basename from urllib2 import Request, urlopen from urllib import urlencode from urlparse import urlsplit +from collections import defaultdict from openid.consumer.consumer import Consumer, SUCCESS, CANCEL, FAILURE from openid.consumer.discover import DiscoveryFailure @@ -594,9 +595,13 @@ SOCIAL_AUTH_IMPORT_SOURCES = ( ) + setting('SOCIAL_AUTH_IMPORT_BACKENDS', ()) def get_backends(): - backends = {} - enabled_backends = setting('SOCIAL_AUTH_ENABLED_BACKENDS') + enabled = setting('SOCIAL_AUTH_ENABLED_BACKENDS') + if enabled: + enabled = defaultdict(lambda: False, ((bak, True) for bak in enabled)) + else: + enabled = defaultdict(lambda: True) + backends = {} for mod_name in SOCIAL_AUTH_IMPORT_SOURCES: try: mod = import_module(mod_name) @@ -609,19 +614,22 @@ def get_backends(): try: name = basename(name).replace('.py', '') sub = import_module(mod_name + '.' + name) + # register only enabled backends - backends.update(((key, val) - for key, val in sub.BACKENDS.items() - if val.enabled() and - (not enabled_backends or - key in enabled_backends))) + new = ((key, val) for key, val in sub.BACKENDS.items() + if val.enabled() and enabled[key]) + backends.update(new) except (ImportError, AttributeError): pass + + if enabled[OpenIdAuth.AUTH_BACKEND.name]: + backends[OpenIdAuth.AUTH_BACKEND.name] = OpenIdAuth return backends + # load backends from defined modules BACKENDS = get_backends() -BACKENDS[OpenIdAuth.AUTH_BACKEND.name] = OpenIdAuth + def get_backend(name, *args, **kwargs): """Return auth backend instance *if* it's registered, None in other case""" -- 2.39.5