37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
from django import forms
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from orchestra.forms import UserCreationForm, UserChangeForm
|
|
|
|
|
|
class CleanCustomFilteringMixin(object):
|
|
def clean_custom_filtering(self):
|
|
filtering = self.cleaned_data['filtering']
|
|
custom_filtering = self.cleaned_data['custom_filtering']
|
|
if filtering == self._meta.model.CUSTOM and not custom_filtering:
|
|
raise forms.ValidationError(_("You didn't provide any custom filtering"))
|
|
return custom_filtering
|
|
|
|
|
|
class MailboxChangeForm(CleanCustomFilteringMixin, UserChangeForm):
|
|
pass
|
|
|
|
|
|
class MailboxCreationForm(CleanCustomFilteringMixin, UserCreationForm):
|
|
def clean_name(self):
|
|
# Since model.clean() will check this, this is redundant,
|
|
# but it sets a nicer error message than the ORM and avoids conflicts with contrib.auth
|
|
name = self.cleaned_data["name"]
|
|
try:
|
|
self._meta.model._default_manager.get(name=name)
|
|
except self._meta.model.DoesNotExist:
|
|
return name
|
|
raise forms.ValidationError(self.error_messages['duplicate_name'])
|
|
|
|
|
|
class AddressForm(forms.ModelForm):
|
|
def clean(self):
|
|
cleaned_data = super(AddressForm, self).clean()
|
|
if not cleaned_data['mailboxes'] and not cleaned_data['forward']:
|
|
raise forms.ValidationError(_("Mailboxes or forward address should be provided"))
|