]> git.parisson.com Git - django-social-auth.git/commitdiff
Allow multiple pipeline breaks. Refs #369
authorMatías Aguirre <matiasaguirre@gmail.com>
Tue, 12 Jun 2012 18:46:07 +0000 (15:46 -0300)
committerMatías Aguirre <matiasaguirre@gmail.com>
Tue, 12 Jun 2012 18:46:07 +0000 (15:46 -0300)
social_auth/backends/__init__.py
social_auth/backends/pipeline/misc.py

index cc2dc20b8315acb0b6ca017813c71ca3ef895796..fb439a400d74f3d9741a9bb9c856653ddcd76d7c 100644 (file)
@@ -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)
index 03c834d58985a1f0d928e9329db8e64d78033d8c..91ccdb246a73f7d19f69611b48b9d446e88e0991 100644 (file)
@@ -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