diff --git a/modoboa/admin/models.py b/modoboa/admin/models.py index fde251531..6fdba1d4e 100644 --- a/modoboa/admin/models.py +++ b/modoboa/admin/models.py @@ -513,7 +513,30 @@ class DomainAlias(DatesAware): ungrant_access_to_object(self) super(DomainAlias, self).delete() + def from_csv(self, user, row): + """Create a domain alias from a CSV row + + Expected format: ["domainalias", domain alias name, targeted domain] + + :param user: a ``User`` object + :param row: a list containing the alias definition + """ + if len(row) < 3: + raise AdminError(_("Invalid line")) + self.name = row[1].strip() + domname = row[2].strip() + try: + self.target = Domain.objects.get(name=domname) + except Domain.DoesNotExist: + raise AdminError(_("Unknown domain %s" % domname)) + self.enabled = True + self.save() + def to_csv(self, csvwriter): + """Export a domain alias using CSV format + + :param csvwriter: a ``csv.writer`` object + """ csvwriter.writerow(["domainalias", self.name, self.target.name]) class Mailbox(DatesAware): diff --git a/modoboa/admin/views.py b/modoboa/admin/views.py index 5e530d6ed..fd62098df 100644 --- a/modoboa/admin/views.py +++ b/modoboa/admin/views.py @@ -560,6 +560,13 @@ def import_domain(user, row): grant_access_to_object(user, dom, is_owner=True) events.raiseEvent("CreateDomain", user, dom) +def import_domainalias(user, row): + """Specific code for domain aliases import""" + domalias = DomainAlias() + domalias.from_csv(user, row) + grant_access_to_object(user, domalias, is_owner=True) + events.raiseEvent("DomainAliasCreated", user, domalias) + def import_account(user, row): """Specific code for accounts import""" mb = Mailbox() @@ -634,7 +641,7 @@ def import_identities(request): if request.method == "POST": return importdata(request) - helptext = _("""Provide a CSV file where lines respect one of the following format: + helptext = _("""Provide a CSV file where lines respect one of the following formats: