74 lines
2.8 KiB
Python
Executable File
74 lines
2.8 KiB
Python
Executable File
from forum.utils.forms import NextUrlField, UserNameField, UserEmailField, SetPasswordForm
|
|
from forum.models import EmailFeedSetting, 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
|
|
from forum.forms import EditUserEmailFeedsForm
|
|
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)
|
|
|
|
def save(self,user=None):
|
|
EFF = EditUserEmailFeedsForm
|
|
if self.cleaned_data['subscribe'] == 'y':
|
|
email_settings_form = EFF()
|
|
logging.debug('%s wants to subscribe' % user.username)
|
|
else:
|
|
email_settings_form = EFF(initial=EFF.NO_EMAIL_INITIAL)
|
|
email_settings_form.save(user,save_unbound=True)
|
|
|
|
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']
|