]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/authentication/forms.py
adapted badges to the new schema
[osqa.git] / forum / authentication / forms.py
old mode 100755 (executable)
new mode 100644 (file)
index 0484134..01c857d
@@ -1,31 +1,64 @@
-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']