Files
modoboa/modoboa/lib/fields.py
T
2016-02-22 09:33:18 +01:00

52 lines
1.4 KiB
Python

"""Custom form fields."""
from django import forms
from django.utils.translation import ugettext_lazy
from rest_framework import serializers
from . import validators
class DomainNameField(forms.fields.CharField):
"""A subclass of CharField that only accepts a valid domain name."""
default_error_messages = {
"invalid": ugettext_lazy("Enter a valid domain name")
}
default_validators = [validators.validate_hostname]
def clean(self, value):
value = self.to_python(value).strip()
return super(DomainNameField, self).clean(value)
class UTF8EmailField(forms.fields.EmailField):
"""A subclass of EmailField to support UTF8 addresses."""
default_validators = [validators.validate_utf8_email]
class UTF8AndEmptyUserEmailField(forms.fields.EmailField):
"""
A subclass of EmailField to support UTF8 addresses (with or without
local part).
"""
default_validators = [validators.validate_utf8_and_empty_user_email]
class DRFEmailFieldUTF8(serializers.CharField):
"""Custom DRF email field to support UTF8."""
default_error_messages = {
"invalid": ugettext_lazy("Enter a valid email address.")
}
def __init__(self, **kwargs):
super(DRFEmailFieldUTF8, self).__init__(**kwargs)
validator = validators.UTF8EmailValidator(
message=self.error_messages["invalid"])
self.validators.append(validator)