diff --git a/modoboa/extensions/admin/models/alias.py b/modoboa/extensions/admin/models/alias.py index 62c0d6f5b..64d587b9f 100644 --- a/modoboa/extensions/admin/models/alias.py +++ b/modoboa/extensions/admin/models/alias.py @@ -170,6 +170,8 @@ class Alias(AdminObject): ext_rcpts = [] for rcpt in row[3:]: rcpt = rcpt.strip() + if not rcpt: + continue localpart, domname = split_mailbox(rcpt) try: Domain.objects.get(name=domname) @@ -177,14 +179,16 @@ class Alias(AdminObject): ext_rcpts += [rcpt] continue try: - target = Alias.objects.get(domain__name=domname, address=localpart) + target = Alias.objects.get( + domain__name=domname, address=localpart + ) if target.full_address == self.full_address: target = None except Alias.DoesNotExist: target = None if target is None: try: - target = Mailbox.objects.get(address=localpart, + target = Mailbox.objects.get(address=localpart, domain__name=domname) except Mailbox.DoesNotExist: raise BadRequest(_("Local recipient %s not found" % rcpt)) diff --git a/modoboa/extensions/admin/tests/import_.py b/modoboa/extensions/admin/tests/import_.py index 7d2c600d7..8c1e6fc24 100644 --- a/modoboa/extensions/admin/tests/import_.py +++ b/modoboa/extensions/admin/tests/import_.py @@ -170,3 +170,17 @@ account; sa@test.com; toto; Super; Admin; True; SuperAdmins; superadmin@test.com ) with self.assertRaises(User.DoesNotExist): User.objects.get(username="sa@test.com") + + def test_import_alias_with_empty_values(self): + f = ContentFile(b""" +alias;user.alias@test.com;True;user@test.com;;;;;;;;;;;;;;;; +""", name="identities.csv") + self.clt.post( + reverse("modoboa.extensions.admin.views.import.import_identities"), + {"sourcefile": f, "crypt_password": True, + "continue_if_exists": True} + ) + alias = Alias.objects.get( + domain__name="test.com", address="user.alias" + ) + self.assertEqual(alias.type, "alias")