mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
@@ -166,9 +166,10 @@ class WritableAccountSerializer(AccountSerializer):
|
||||
class AliasSerializer(serializers.ModelSerializer):
|
||||
"""Base Alias serializer."""
|
||||
|
||||
address = lib_fields.DRFEmailFieldUTF8()
|
||||
address = lib_fields.DRFEmailFieldUTF8AndEmptyUser()
|
||||
recipients = serializers.ListField(
|
||||
child=lib_fields.DRFEmailFieldUTF8(), allow_empty=False)
|
||||
child=lib_fields.DRFEmailFieldUTF8AndEmptyUser(),
|
||||
allow_empty=False)
|
||||
|
||||
class Meta:
|
||||
model = admin_models.Alias
|
||||
|
||||
@@ -328,6 +328,12 @@ class AliasAPITestCase(ModoAPITestCase):
|
||||
address="user_éé@nonlocal.com",
|
||||
r_mailbox__isnull=True, r_alias__isnull=True).exists())
|
||||
|
||||
# Create catchall alias
|
||||
data = copy.deepcopy(self.ALIAS_DATA)
|
||||
data["address"] = "@test.com"
|
||||
response = self.client.post(url, data, format="json")
|
||||
self.assertEqual(response.status_code, 201)
|
||||
|
||||
def test_update_alias(self):
|
||||
"""Try to update an alias."""
|
||||
alias = models.Alias.objects.get(address="alias@test.com")
|
||||
|
||||
@@ -49,3 +49,17 @@ class DRFEmailFieldUTF8(serializers.CharField):
|
||||
validator = validators.UTF8EmailValidator(
|
||||
message=self.error_messages["invalid"])
|
||||
self.validators.append(validator)
|
||||
|
||||
|
||||
class DRFEmailFieldUTF8AndEmptyUser(serializers.CharField):
|
||||
"""Custom DRF email field to support UTF8 and empty local part."""
|
||||
|
||||
default_error_messages = {
|
||||
"invalid": ugettext_lazy("Enter a valid email address.")
|
||||
}
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super(DRFEmailFieldUTF8AndEmptyUser, self).__init__(**kwargs)
|
||||
validator = validators.UTF8AndEmptyUserEmailValidator(
|
||||
message=self.error_messages["invalid"])
|
||||
self.validators.append(validator)
|
||||
|
||||
@@ -53,11 +53,11 @@ class UTF8EmailValidator(EmailValidator):
|
||||
validate_utf8_email = UTF8EmailValidator()
|
||||
|
||||
|
||||
class UT8AndEmptyUserEmailValidator(UTF8EmailValidator):
|
||||
class UTF8AndEmptyUserEmailValidator(UTF8EmailValidator):
|
||||
|
||||
"""Same as upper + allows empty local part."""
|
||||
|
||||
user_regex = re.compile(
|
||||
ur"(^$|" + UTF8EmailValidator.user_regex_raw, re.IGNORECASE)
|
||||
|
||||
validate_utf8_and_empty_user_email = UT8AndEmptyUserEmailValidator()
|
||||
validate_utf8_and_empty_user_email = UTF8AndEmptyUserEmailValidator()
|
||||
|
||||
Reference in New Issue
Block a user