"""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)
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