from django.http import HttpResponseRedirect
+def redirect_to_form(*args, **kwargs):
+ if not kwargs['request'].session.get('saved_username') and \
+ kwargs.get('user') is None:
+ return HttpResponseRedirect('/form/')
+
+
def username(request, *args, **kwargs):
if kwargs.get('user'):
username = kwargs['user'].username
return {'username': username}
-def redirect_to_form(*args, **kwargs):
- if not kwargs['request'].session.get('saved_username') and \
- kwargs.get('user') is None:
- return HttpResponseRedirect('/form/')
+def redirect_to_form2(*args, **kwargs):
+ if not kwargs['request'].session.get('saved_first_name'):
+ return HttpResponseRedirect('/form2/')
+
+
+def first_name(request, *args, **kwargs):
+ if 'saved_first_name' in request.session:
+ user = kwargs['user']
+ user.first_name = request.session.get('saved_first_name')
+ user.save()
backend = request.session[name]['backend']
return redirect('socialauth_complete', backend=backend)
return render_to_response('form.html', {}, RequestContext(request))
+
+
+def form2(request):
+ if request.method == 'POST' and request.POST.get('first_name'):
+ request.session['saved_first_name'] = request.POST['first_name']
+ name = setting('SOCIAL_AUTH_PARTIAL_PIPELINE_KEY', 'partial_pipeline')
+ backend = request.session[name]['backend']
+ return redirect('socialauth_complete', backend=backend)
+ return render_to_response('form2.html', {}, RequestContext(request))
LOGIN_REDIRECT_URL = '/'
+SOCIAL_AUTH_PIPELINE = (
+ 'social_auth.backends.pipeline.social.social_auth_user',
+ 'social_auth.backends.pipeline.associate.associate_by_email',
+ 'social_auth.backends.pipeline.misc.save_status_to_session',
+ 'app.pipeline.redirect_to_form',
+ 'app.pipeline.username',
+ 'social_auth.backends.pipeline.user.create_user',
+ 'social_auth.backends.pipeline.social.associate_user',
+ 'social_auth.backends.pipeline.social.load_extra_data',
+ 'social_auth.backends.pipeline.user.update_user_details',
+ 'social_auth.backends.pipeline.misc.save_status_to_session',
+ 'app.pipeline.redirect_to_form2',
+ 'app.pipeline.first_name',
+)
+
try:
from local_settings import *
except:
--- /dev/null
+{% extends "base.html" %}
+
+{% block heading %}User basic form2{% endblock %}
+
+{% block content %}
+<form action="" method="post">
+ {% csrf_token %}
+ <p>
+ <label for="id_first_name">First Name</label>
+ <input type="text" name="first_name" id="id_first_name" value="" />
+ </p>
+
+ <input type="submit" value="Send" />
+</form>
+{% endblock %}
from django.conf.urls.defaults import patterns, url, include
from django.contrib import admin
-from app.views import home, done, logout, error, form
+from app.views import home, done, logout, error, form, form2
admin.autodiscover()
url(r'^error/$', error, name='error'),
url(r'^logout/$', logout, name='logout'),
url(r'^form/$', form, name='form'),
+ url(r'^form2/$', form2, name='form2'),
url(r'^admin/', include(admin.site.urls)),
url(r'', include('social_auth.urls')),
)