From a1b238625cb3f9576454b290558e7c73823106a3 Mon Sep 17 00:00:00 2001 From: Patrick Altman Date: Thu, 12 Jan 2012 16:06:09 -0500 Subject: [PATCH] Added some signals to login/signup forms --- pinax/apps/account/forms.py | 18 +++++++++++++++++- pinax/apps/account/signals.py | 8 ++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/pinax/apps/account/forms.py b/pinax/apps/account/forms.py index 04e3b0951..8c5ad6956 100644 --- a/pinax/apps/account/forms.py +++ b/pinax/apps/account/forms.py @@ -17,6 +17,7 @@ from timezones.forms import TimeZoneField from pinax.apps.account.models import Account, PasswordReset +from pinax.apps.account.signals import user_login_attempt, user_signed_up, user_sign_up_attempt from pinax.apps.account.utils import perform_login, change_password @@ -98,6 +99,11 @@ def clean(self): raise forms.ValidationError(error) return self.cleaned_data + def is_valid(self, *args, **kwargs): + result = super(LoginForm, self).is_valid(*args, **kwargs) + user_login_attempt.send(sender=LoginForm, username=self.data["username"], result=result) + return result + def login(self, request): perform_login(request, self.user) if self.cleaned_data["remember"]: @@ -241,11 +247,21 @@ def save(self, request=None): return new_user + def is_valid(self, *args, **kwargs): + result = super(SignupForm, self).is_valid(*args, **kwargs) + user_sign_up_attempt.send( + sender=SignupForm, + username=self.data["username"], + email=self.data["email"], + result=result + ) + return result + def after_signup(self, user, **kwargs): """ An extension point for subclasses. """ - pass + user_signed_up.send(sender=SignupForm, user=user) class OpenIDSignupForm(SignupForm): diff --git a/pinax/apps/account/signals.py b/pinax/apps/account/signals.py index 1c0ab5658..9ef4e9bdc 100644 --- a/pinax/apps/account/signals.py +++ b/pinax/apps/account/signals.py @@ -1,5 +1,9 @@ import django.dispatch - +# @@@ this is the exact same as in django.contrib.auth not sure why it's duped here user_logged_in = django.dispatch.Signal(providing_args=["request", "user"]) -password_changed = django.dispatch.Signal(providing_args=["user",]) \ No newline at end of file + +password_changed = django.dispatch.Signal(providing_args=["user",]) +user_login_attempt = django.dispatch.Signal(providing_args=["username", "result"]) +user_sign_up_attempt = django.dispatch.Signal(providing_args=["username", "email", "result"]) +user_signed_up = django.dispatch.Signal(providing_args=["user"]) \ No newline at end of file