X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=apps%2Fpatchwork%2Fviews%2Fuser.py;h=759a6e392f1d6da1d8eb3d5d6ca14389d7bc7252;hb=56e2243f3be7e859666ce0e4e1a8b8b94444f8d4;hp=4a34414a01446399b5b74b70ef851f62f3cc7c8f;hpb=f1e089f7736ac8f7b9af784461350c4c169211ad;p=patchwork diff --git a/apps/patchwork/views/user.py b/apps/patchwork/views/user.py index 4a34414..759a6e3 100644 --- a/apps/patchwork/views/user.py +++ b/apps/patchwork/views/user.py @@ -21,18 +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.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,45 +57,50 @@ 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: send_mail('Patchwork email address confirmation', render_to_string('patchwork/user-link.mail', context), - settings.PATCHWORK_FROM_EMAIL, + 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':