diff --git a/modoboa/admin/models.py b/modoboa/admin/models.py index e04e3bc02..e9ccc6bd2 100644 --- a/modoboa/admin/models.py +++ b/modoboa/admin/models.py @@ -799,9 +799,9 @@ class Alias(DatesAware): return True return False - def create_from_csv(self, user, row): - if len(row) < 4: - raise AdminError(_("Invalid line")) + def create_from_csv(self, user, row, expected_elements=4): + if len(row) < expected_elements: + raise AdminError(_("Invalid line: %s" % row)) localpart, domname = split_mailbox(row[1].strip()) try: domain = Domain.objects.get(name=domname) diff --git a/modoboa/admin/views.py b/modoboa/admin/views.py index e1a25e869..f61368c53 100644 --- a/modoboa/admin/views.py +++ b/modoboa/admin/views.py @@ -567,12 +567,21 @@ def import_account(user, row): events.raiseEvent("AccountCreated", mb.user) events.raiseEvent("CreateMailbox", user, mb) +def _import_alias(user, row, **kwargs): + """Specific code for aliases import""" + alias = Alias() + alias.create_from_csv(user, row, **kwargs) + grant_access_to_object(user, alias, is_owner=True) + events.raiseEvent("MailboxAliasCreated", user, alias) + +def import_alias(user, row): + _import_alias(user, row, expected_elements=3) + +def import_forward(user, row): + _import_alias(user, row, expected_elements=3) + def import_dlist(user, row): - """Specific code for distribution lists import""" - dlist = Alias() - dlist.create_from_csv(user, row) - grant_access_to_object(user, dlist, is_owner=True) - events.raiseEvent("MailboxAliasCreated", user, dlist) + _import_alias(user, row) def importdata(request): """Generic import function @@ -626,9 +635,13 @@ def import_identities(request): helptext = _("""Provide a CSV file where lines respect one of the following format: -You can use a different character as separator. +

The first element of each line is mandatory and must be equal to one of the previous values.

+ +

You can use a different character as separator.

""") ctx = dict( title=_("Import identities"), @@ -650,10 +663,12 @@ def import_domains(request): if request.method == "POST": return importdata(request) - helptext = _("""Provide a CSV file where lines respect the following format:
-domain; name; quota
- -You can use a different character as separator. + helptext = _("""Provide a CSV file where lines respect the following format: + +

The domain keyword must be present for each line.

+

You can use a different character as separator.

""") ctx = dict(