]> git.openstreetmap.org Git - osqa.git/commitdiff
Makes temp signin requests to send an email to each duplicate account.
authorhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Mon, 28 Jun 2010 10:17:15 +0000 (10:17 +0000)
committerhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Mon, 28 Jun 2010 10:17:15 +0000 (10:17 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@453 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/forms/auth.py
forum/views/auth.py

index 594e59f8e526de85326df6fe14d2a2a4a6b88b37..cb88ac252dbf2f3ede6f03ad559713f4a8d9405d 100644 (file)
@@ -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']
 
 
index 90af33b20013f18785f7dafb228a5797dda7a5a6..75095a6c3aba5e59347f94c94c3d00574ad9ce5c 100644 (file)
@@ -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):