Integrated my history into data
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# coding=utf-8
|
||||
from functools import wraps
|
||||
|
||||
from django.conf import settings
|
||||
from django.http import Http404
|
||||
|
||||
from social_core.utils import setting_name, module_member, get_strategy
|
||||
from social_core.exceptions import MissingBackend
|
||||
from social_core.backends.utils import get_backend
|
||||
from .compat import reverse
|
||||
|
||||
|
||||
BACKENDS = settings.AUTHENTICATION_BACKENDS
|
||||
STRATEGY = getattr(settings, setting_name('STRATEGY'),
|
||||
'social_django.strategy.DjangoStrategy')
|
||||
STORAGE = getattr(settings, setting_name('STORAGE'),
|
||||
'social_django.models.DjangoStorage')
|
||||
Strategy = module_member(STRATEGY)
|
||||
Storage = module_member(STORAGE)
|
||||
|
||||
|
||||
def load_strategy(request=None):
|
||||
return get_strategy(STRATEGY, STORAGE, request)
|
||||
|
||||
|
||||
def load_backend(strategy, name, redirect_uri):
|
||||
Backend = get_backend(BACKENDS, name)
|
||||
return Backend(strategy, redirect_uri)
|
||||
|
||||
|
||||
def psa(redirect_uri=None, load_strategy=load_strategy):
|
||||
def decorator(func):
|
||||
@wraps(func)
|
||||
def wrapper(request, backend, *args, **kwargs):
|
||||
uri = redirect_uri
|
||||
if uri and not uri.startswith('/'):
|
||||
uri = reverse(redirect_uri, args=(backend,))
|
||||
request.social_strategy = load_strategy(request)
|
||||
# backward compatibility in attribute name, only if not already
|
||||
# defined
|
||||
if not hasattr(request, 'strategy'):
|
||||
request.strategy = request.social_strategy
|
||||
|
||||
try:
|
||||
request.backend = load_backend(request.social_strategy,
|
||||
backend, uri)
|
||||
except MissingBackend:
|
||||
raise Http404('Backend not found')
|
||||
return func(request, backend, *args, **kwargs)
|
||||
return wrapper
|
||||
return decorator
|
||||
Reference in New Issue
Block a user