Possibility to import aliases and forwards.

see #317
This commit is contained in:
Antoine Nguyen
2013-01-11 11:44:22 +01:00
parent 1b72e6f394
commit 90fc3b8fd1
2 changed files with 28 additions and 13 deletions
+3 -3
View File
@@ -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)
+25 -10
View File
@@ -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:
<ul>
<li><em>account; loginname; password; first name; last name; address</em></li>
<li><em>alias; address; internal recipient</em></li>
<li><em>forward; address; external recipient</em></li>
<li><em>dlist; address; recipient; recipient; ...</em></li>
</ul>
You can use a different character as separator.
<p>The first element of each line is mandatory and must be equal to one of the previous values.</p>
<p>You can use a different character as separator.</p>
""")
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:<br/>
<em>domain; name; quota</em><br/>
You can use a different character as separator.
helptext = _("""Provide a CSV file where lines respect the following format:
<ul>
<li><em>domain; name; quota</em></li>
</ul>
<p>The <em>domain</em> keyword must be present for each line.</p>
<p>You can use a different character as separator.</p>
""")
ctx = dict(