From a429e83d065dfd8b6fe1fca242c1d4d076c247c7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mat=C3=ADas=20Aguirre?= Date: Tue, 12 Jun 2012 15:46:07 -0300 Subject: [PATCH] Allow multiple pipeline breaks. Refs #369 --- social_auth/backends/__init__.py | 8 +++++++- social_auth/backends/pipeline/misc.py | 17 +++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/social_auth/backends/__init__.py b/social_auth/backends/__init__.py index cc2dc20..fb439a4 100644 --- a/social_auth/backends/__init__.py +++ b/social_auth/backends/__init__.py @@ -127,7 +127,13 @@ class SocialAuthBackend(ModelBackend): """Pipeline""" out = kwargs.copy() - for name in pipeline: + if 'pipeline_index' in kwargs: + base_index = int(kwargs['pipeline_index']) + else: + base_index = 0 + + for idx, name in enumerate(pipeline): + out['pipeline_index'] = base_index + idx mod_name, func_name = name.rsplit('.', 1) try: mod = import_module(mod_name) diff --git a/social_auth/backends/pipeline/misc.py b/social_auth/backends/pipeline/misc.py index 03c834d..91ccdb2 100644 --- a/social_auth/backends/pipeline/misc.py +++ b/social_auth/backends/pipeline/misc.py @@ -2,22 +2,15 @@ from social_auth.backends import PIPELINE from social_auth.utils import setting -PIPELINE_ENTRY = 'social_auth.backends.pipeline.misc.save_status_to_session' - - -def save_status_to_session(request, auth, *args, **kwargs): +def save_status_to_session(request, auth, pipeline_index, *args, **kwargs): """Saves current social-auth status to session.""" next_entry = setting('SOCIAL_AUTH_PIPELINE_RESUME_ENTRY') - try: - if next_entry: - idx = list(PIPELINE).index(next_entry) - else: - idx = list(PIPELINE).index(PIPELINE_ENTRY) + 1 - except ValueError: - idx = None + if next_entry and next_entry in PIPELINE: + idx = PIPELINE.index(next_entry) + else: + idx = pipeline_index + 1 data = auth.to_session_dict(idx, *args, **kwargs) - name = setting('SOCIAL_AUTH_PARTIAL_PIPELINE_KEY', 'partial_pipeline') request.session[name] = data -- 2.39.5