-from forum.utils.forms import NextUrlField, UserNameField, UserEmailField\r
-from forum.models import EmailFeedSetting, Question\r
-from django.contrib.contenttypes.models import ContentType\r
-from django.utils.translation import ugettext as _\r
-from django import forms\r
-from forum.forms import EditUserEmailFeedsForm\r
-import logging\r
-\r
-class SimpleRegistrationForm(forms.Form):\r
- next = NextUrlField()\r
- username = UserNameField()\r
- email = UserEmailField()\r
-\r
-\r
-class SimpleEmailSubscribeForm(forms.Form):\r
- SIMPLE_SUBSCRIBE_CHOICES = (\r
- ('y',_('okay, let\'s try!')),\r
- ('n',_('no OSQA community email please, thanks'))\r
- )\r
- subscribe = forms.ChoiceField(widget=forms.widgets.RadioSelect(), \\r
- error_messages={'required':_('please choose one of the options above')},\r
- choices=SIMPLE_SUBSCRIBE_CHOICES)\r
-\r
- def save(self,user=None):\r
- EFF = EditUserEmailFeedsForm\r
- if self.cleaned_data['subscribe'] == 'y':\r
- email_settings_form = EFF()\r
- logging.debug('%s wants to subscribe' % user.username)\r
- else:\r
- email_settings_form = EFF(initial=EFF.NO_EMAIL_INITIAL)\r
- email_settings_form.save(user,save_unbound=True)\r
+from forum.utils.forms import NextUrlField, UserNameField, UserEmailField, SetPasswordForm
+from forum.models import Question, User
+from django.contrib.contenttypes.models import ContentType
+from django.utils.translation import ugettext as _
+from django.utils.safestring import mark_safe
+from django import forms
+import logging
+
+class SimpleRegistrationForm(forms.Form):
+ next = NextUrlField()
+ username = UserNameField()
+ email = UserEmailField()
+
+class TemporaryLoginRequestForm(forms.Form):
+ def __init__(self, data=None):
+ super(TemporaryLoginRequestForm, self).__init__(data)
+ self.user_cache = None
+
+ email = forms.EmailField(
+ required=True,
+ label=_("Your account email"),
+ error_messages={
+ 'required': _("You cannot leave this field blank"),
+ 'invalid': _('please enter a valid email address'),
+ }
+ )
+
+ def clean_email(self):
+ try:
+ user = User.objects.get(email=self.cleaned_data['email'])
+ except:
+ raise forms.ValidationError(_("Sorry, but this email is not on our database."))
+
+ self.user_cache = user
+ return self.cleaned_data['email']
+
+
+class SimpleEmailSubscribeForm(forms.Form):
+ SIMPLE_SUBSCRIBE_CHOICES = (
+ ('y',_('okay, let\'s try!')),
+ ('n',_('no OSQA community email please, thanks'))
+ )
+ subscribe = forms.ChoiceField(widget=forms.widgets.RadioSelect(), \
+ error_messages={'required':_('please choose one of the options above')},
+ choices=SIMPLE_SUBSCRIBE_CHOICES)
+
+
+class ChangePasswordForm(SetPasswordForm):
+ """ change password form """
+ oldpw = forms.CharField(widget=forms.PasswordInput(attrs={'class':'required'}),
+ label=mark_safe(_('Current password')))
+
+ def __init__(self, data=None, user=None, *args, **kwargs):
+ if user is None:
+ raise TypeError("Keyword argument 'user' must be supplied")
+ super(ChangePasswordForm, self).__init__(data, *args, **kwargs)
+ self.user = user
+
+ def clean_oldpw(self):
+ """ test old password """
+ if not self.user.check_password(self.cleaned_data['oldpw']):
+ raise forms.ValidationError(_("Old password is incorrect. \
+ Please enter the correct password."))
+ return self.cleaned_data['oldpw']