]> git.parisson.com Git - django-social-auth.git/commitdiff
Example for multiple partial pipeline usage. Closes #369
authorMatías Aguirre <matiasaguirre@gmail.com>
Tue, 12 Jun 2012 18:47:08 +0000 (15:47 -0300)
committerMatías Aguirre <matiasaguirre@gmail.com>
Tue, 12 Jun 2012 18:47:08 +0000 (15:47 -0300)
example/app/pipeline.py
example/app/views.py
example/settings.py
example/templates/form2.html [new file with mode: 0644]
example/urls.py

index b10a6659f85d87c87b522f8d4c586799b2a601e3..2cb2288e2559a83d52f5acd8655852200d0797d9 100644 (file)
@@ -1,6 +1,12 @@
 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
@@ -9,7 +15,13 @@ def username(request, *args, **kwargs):
     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()
index 3c100643a67340b3405611be7d33753afb3abdf2..553ecbc87de3636408d12651cc84171cc6d1e411 100644 (file)
@@ -49,3 +49,12 @@ def form(request):
         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))
index 4af588cf879e729fd17e8f5634d04b7d9e3eb8bf..2235d5d010ddd8ac86b559c3a1f7f1eec00caf20 100644 (file)
@@ -105,6 +105,21 @@ TEMPLATE_CONTEXT_PROCESSORS = (
 
 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:
diff --git a/example/templates/form2.html b/example/templates/form2.html
new file mode 100644 (file)
index 0000000..413ad52
--- /dev/null
@@ -0,0 +1,15 @@
+{% 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 %}
index 8344d27d21de525b18131312233d0e121b913b03..c55e3285bc9dd77df4c5445a813f14677cf2dde6 100644 (file)
@@ -1,7 +1,7 @@
 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()
@@ -12,6 +12,7 @@ urlpatterns = patterns('',
     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')),
 )