from datetime import timedelta as td from django import forms 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 EmailPasswordForm(forms.Form): email = LowercaseEmailField() password = forms.CharField(required=False) 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 not available" % 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)