From 522d4762eb1aaba30d4de9275dbea9b83e3e7227 Mon Sep 17 00:00:00 2001 From: hernani Date: Mon, 28 Jun 2010 10:17:15 +0000 Subject: [PATCH] Makes temp signin requests to send an email to each duplicate account. git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@453 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- forum/forms/auth.py | 8 ++++---- forum/views/auth.py | 30 +++++++++++++++++------------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/forum/forms/auth.py b/forum/forms/auth.py index 594e59f..cb88ac2 100644 --- a/forum/forms/auth.py +++ b/forum/forms/auth.py @@ -26,12 +26,12 @@ class TemporaryLoginRequestForm(forms.Form): ) def clean_email(self): - try: - user = User.objects.get(email=self.cleaned_data['email']) - except: + users = list(User.objects.filter(email=self.cleaned_data['email'])) + + if not len(users): raise forms.ValidationError(_("Sorry, but this email is not on our database.")) - self.user_cache = user + self.user_cache = users return self.cleaned_data['email'] diff --git a/forum/views/auth.py b/forum/views/auth.py index 90af33b..75095a6 100644 --- a/forum/views/auth.py +++ b/forum/views/auth.py @@ -226,22 +226,24 @@ def request_temp_login(request): form = TemporaryLoginRequestForm(request.POST) if form.is_valid(): - user = form.user_cache + users = form.user_cache - if user.is_suspended(): - return forward_suspended_user(request, user, False) + for u in users: + if u.is_suspended(): + return forward_suspended_user(request, u, False) - try: - hash = get_object_or_404(ValidationHash, user=user, type='templogin') - if hash.expiration < datetime.datetime.now(): - hash.delete() - return request_temp_login(request) - except: - hash = ValidationHash.objects.create_new(user, 'templogin', [user.id]) + for u in users: + try: + hash = get_object_or_404(ValidationHash, user=u, type='templogin') + if hash.expiration < datetime.datetime.now(): + hash.delete() + return request_temp_login(request) + except: + hash = ValidationHash.objects.create_new(u, 'templogin', [u.id]) - send_template_email([user], "auth/temp_login_email.html", {'temp_login_code': hash}) + send_template_email([u], "auth/temp_login_email.html", {'temp_login_code': hash}) - request.user.message_set.create(message=_("An email has been sent with your temporary login key")) + request.user.message_set.create(message=_("An email has been sent with your temporary login key")) return HttpResponseRedirect(reverse('index')) else: @@ -367,7 +369,9 @@ def login_and_forward(request, user, forward=None, message=None): request.user.message_set.create(message=message) - forward = request.session.get('on_signin_url', reverse('index')) + if not forward: + forward = request.session.get('on_signin_url', reverse('index')) + pending_data = request.session.get('pending_submission_data', None) if pending_data and (user.email_isvalid or pending_data['type'] not in settings.REQUIRE_EMAIL_VALIDATION_TO): -- 2.45.2