You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

99 lines
2.7 KiB

from datetime import timedelta as td
from django import forms
from django.contrib.auth import authenticate
from django.contrib.auth.models import User
class LowercaseEmailField(forms.EmailField):
def clean(self, value):
value = super(LowercaseEmailField, self).clean(value)
return value.lower()
class AvailableEmailForm(forms.Form):
# Call it "identity" instead of "email"
# to avoid some of the dumber bots
identity = LowercaseEmailField(error_messages={'required': 'Please enter your email address.'})
def clean_identity(self):
v = self.cleaned_data["identity"]
if User.objects.filter(email=v).exists():
raise forms.ValidationError("An account with this email address already exists.")
return v
class ExistingEmailForm(forms.Form):
# Call it "identity" instead of "email"
# to avoid some of the dumber bots
identity = LowercaseEmailField()
def clean_identity(self):
v = self.cleaned_data["identity"]
try:
self.user = User.objects.get(email=v)
except User.DoesNotExist:
raise forms.ValidationError("Incorrect email address.")
return v
class EmailPasswordForm(forms.Form):
email = LowercaseEmailField()
password = forms.CharField()
def clean(self):
username = self.cleaned_data.get('email')
password = self.cleaned_data.get('password')
if username and password:
self.user = authenticate(username=username, password=password)
if self.user is None:
raise forms.ValidationError("Incorrect email or password")
if not self.user.is_active:
raise forms.ValidationError("Account is inactive")
return self.cleaned_data
class ReportSettingsForm(forms.Form):
reports_allowed = forms.BooleanField(required=False)
nag_period = forms.IntegerField(min_value=0, max_value=86400)
def clean_nag_period(self):
seconds = self.cleaned_data["nag_period"]
if seconds not in (0, 3600, 86400):
raise forms.ValidationError("Bad nag_period: %d" % seconds)
return td(seconds=seconds)
class SetPasswordForm(forms.Form):
password = forms.CharField()
class ChangeEmailForm(forms.Form):
error_css_class = "has-error"
email = LowercaseEmailField()
def clean_email(self):
v = self.cleaned_data["email"]
if User.objects.filter(email=v).exists():
raise forms.ValidationError("%s is already registered" % v)
return v
class InviteTeamMemberForm(forms.Form):
email = LowercaseEmailField()
class RemoveTeamMemberForm(forms.Form):
email = LowercaseEmailField()
class TeamNameForm(forms.Form):
team_name = forms.CharField(max_length=200, required=True)