summaryrefslogtreecommitdiffstats
path: root/apps/patchwork/views/user.py
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2010-10-31 19:29:29 -0400
committerJeremy Kerr <jk@ozlabs.org>2011-04-14 17:21:04 +0800
commitc2c6a408c7764fa29389ce160f52776c9308d50a (patch)
tree1c47388b5494210aeed87f56f0c8b6e9fbeb4633 /apps/patchwork/views/user.py
parent56e2243f3be7e859666ce0e4e1a8b8b94444f8d4 (diff)
downloadpatchwork-c2c6a408c7764fa29389ce160f52776c9308d50a.tar.bz2
patchwork-c2c6a408c7764fa29389ce160f52776c9308d50a.tar.xz
registration: use EmailConfimation rather than separate registration app
Since we have infrastructure for email confirmations, we no longer need the separate registration app. Requires a migration script, which will delete all inactive users, including those newly added and pending confirmation. Use carefully. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'apps/patchwork/views/user.py')
-rw-r--r--apps/patchwork/views/user.py54
1 files changed, 53 insertions, 1 deletions
diff --git a/apps/patchwork/views/user.py b/apps/patchwork/views/user.py
index 759a6e3..3d28f4b 100644
--- a/apps/patchwork/views/user.py
+++ b/apps/patchwork/views/user.py
@@ -21,9 +21,12 @@
from django.contrib.auth.decorators import login_required
from patchwork.requestcontext import PatchworkRequestContext
from django.shortcuts import render_to_response, get_object_or_404
+from django.contrib import auth
+from django.contrib.sites.models import Site
from django.http import HttpResponseRedirect
from patchwork.models import Project, Bundle, Person, EmailConfirmation, State
-from patchwork.forms import UserProfileForm, UserPersonLinkForm
+from patchwork.forms import UserProfileForm, UserPersonLinkForm, \
+ RegistrationForm
from patchwork.filters import DelegateFilter
from patchwork.views import generic_list
from django.template.loader import render_to_string
@@ -31,6 +34,55 @@ from django.conf import settings
from django.core.mail import send_mail
import django.core.urlresolvers
+def register(request):
+ context = PatchworkRequestContext(request)
+ if request.method == 'POST':
+ form = RegistrationForm(request.POST)
+ if form.is_valid():
+ data = form.cleaned_data
+ # create inactive user
+ user = auth.models.User.objects.create_user(data['username'],
+ data['email'],
+ data['password'])
+ user.is_active = False;
+ user.first_name = data.get('first_name', '')
+ user.last_name = data.get('last_name', '')
+ user.save()
+
+ # create confirmation
+ conf = EmailConfirmation(type = 'registration', user = user,
+ email = user.email)
+ conf.save()
+
+ # send email
+ mail_ctx = {'site': Site.objects.get_current(),
+ 'confirmation': conf}
+
+ subject = render_to_string('patchwork/activation_email_subject.txt',
+ mail_ctx).replace('\n', ' ').strip()
+
+ message = render_to_string('patchwork/activation_email.txt',
+ mail_ctx)
+
+ send_mail(subject, message, settings.DEFAULT_FROM_EMAIL,
+ [conf.email])
+
+ # setting 'confirmation' in the template indicates success
+ context['confirmation'] = conf
+
+ else:
+ form = RegistrationForm()
+
+ return render_to_response('patchwork/registration_form.html',
+ { 'form': form },
+ context_instance=context)
+
+def register_confirm(request, conf):
+ conf.user.is_active = True
+ conf.user.save()
+ conf.deactivate()
+ return render_to_response('patchwork/registration-confirm.html')
+
@login_required
def profile(request):
context = PatchworkRequestContext(request)