]> git.ozlabs.org Git - patchwork/blobdiff - apps/patchwork/views/user.py
Use generic email confirmation object
[patchwork] / apps / patchwork / views / user.py
index b042d35b2f8a433984a981e60f55c1b50c68c114..759a6e392f1d6da1d8eb3d5d6ca14389d7bc7252 100644 (file)
 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.http import HttpResponse, HttpResponseRedirect
-from patchwork.models import Project, Patch, Bundle, Person, UserProfile, \
-         UserPersonConfirmation, State
-from patchwork.forms import MultiplePatchForm, UserProfileForm, \
-         UserPersonLinkForm
-from patchwork.utils import Order, get_patch_ids
+from django.http import HttpResponseRedirect
+from patchwork.models import Project, Bundle, Person, EmailConfirmation, State
+from patchwork.forms import UserProfileForm, UserPersonLinkForm
 from patchwork.filters import DelegateFilter
-from patchwork.paginator import Paginator
 from patchwork.views import generic_list
 from django.template.loader import render_to_string
-from django.template import Context
 from django.conf import settings
 from django.core.mail import send_mail
 import django.core.urlresolvers
@@ -63,12 +57,13 @@ def profile(request):
 def link(request):
     context = PatchworkRequestContext(request)
 
-    form = UserPersonLinkForm(request.POST)
     if request.method == 'POST':
         form = UserPersonLinkForm(request.POST)
         if form.is_valid():
-            conf = UserPersonConfirmation(user = request.user,
+            conf = EmailConfirmation(type = 'userperson',
+                    user = request.user,
                     email = form.cleaned_data['email'])
+            conf.save()
             context['confirmation'] = conf
 
             try:
@@ -77,31 +72,35 @@ def link(request):
                                 context),
                             settings.DEFAULT_FROM_EMAIL,
                             [form.cleaned_data['email']])
-                conf.save()
-            except Exception, ex:
+            except Exception:
                 context['confirmation'] = None
                 context['error'] = 'An error occurred during confirmation. ' + \
                                    'Please try again later'
+    else:
+        form = UserPersonLinkForm()
     context['linkform'] = form
 
     return render_to_response('patchwork/user-link.html', context)
 
 @login_required
-def link_confirm(request, key):
+def link_confirm(request, conf):
     context = PatchworkRequestContext(request)
-    confirmation = get_object_or_404(UserPersonConfirmation, key = key)
 
-    errors = confirmation.confirm()
-    if errors:
-        context['errors'] = errors
-    else:
-        context['person'] = Person.objects.get(email = confirmation.email)
+    try:
+        person = Person.objects.get(email__iexact = conf.email)
+    except Person.DoesNotExist:
+        person = Person(email = conf.email)
+
+    person.link_to_user(conf.user)
+    person.save()
+    conf.deactivate()
+
+    context['person'] = person
 
     return render_to_response('patchwork/user-link-confirm.html', context)
 
 @login_required
 def unlink(request, person_id):
-    context = PatchworkRequestContext(request)
     person = get_object_or_404(Person, id = person_id)
 
     if request.method == 'POST':