diff --git a/modoboa/admin/models/domain.py b/modoboa/admin/models/domain.py
index 2eeb83e49..145edfc8a 100644
--- a/modoboa/admin/models/domain.py
+++ b/modoboa/admin/models/domain.py
@@ -241,28 +241,38 @@ class Domain(AdminObject):
The expected fields order is the following::
- "domain", name, default_mailbox_quota, enabled
+ "domain", name, quota, default_mailbox_quota, enabled
:param ``core.User`` user: user creating the domain
:param str row: a list containing domain's definition
"""
- if len(row) < 4:
+ if len(row) < 5:
raise BadRequest(_("Invalid line"))
self.name = row[1].strip()
if Domain.objects.filter(name=self.name).exists():
raise Conflict
try:
- self.default_mailbox_quota = int(row[2].strip())
+ self.quota = int(row[2].strip())
except ValueError:
raise BadRequest(
- _("Invalid default mailbox quota value for domain '%s'")
- % self.name)
- self.enabled = (row[3].strip() in ["True", "1", "yes", "y"])
+ _("Invalid quota value for domain '{}'")
+ .format(self.name)
+ )
+ try:
+ self.default_mailbox_quota = int(row[3].strip())
+ except ValueError:
+ raise BadRequest(
+ _("Invalid default mailbox quota value for domain '{}'")
+ .format(self.name)
+ )
+ self.enabled = (row[4].strip() in ["True", "1", "yes", "y"])
self.save(creator=user)
def to_csv(self, csvwriter):
csvwriter.writerow([
- "domain", self.name, self.default_mailbox_quot, self.enabled])
+ "domain", self.name, self.quota, self.default_mailbox_quot,
+ self.enabled
+ ])
for dalias in self.domainalias_set.all():
dalias.to_csv(csvwriter)
diff --git a/modoboa/admin/templates/admin/import_domains_form.html b/modoboa/admin/templates/admin/import_domains_form.html
index d1777468d..28fe99dea 100644
--- a/modoboa/admin/templates/admin/import_domains_form.html
+++ b/modoboa/admin/templates/admin/import_domains_form.html
@@ -6,7 +6,7 @@
{% blocktrans trimmed %}
Provide a CSV file where lines respect one of the following formats:
- - domain; name; default mailbox quota; enabled
+ - domain; name; quota; default mailbox quota; enabled
- domainalias; name; targeted domain; enabled
- relaydomain; name; target host; target port; service; enabled; verify recipients
diff --git a/modoboa/admin/tests/test_import_.py b/modoboa/admin/tests/test_import_.py
index 634a6a64c..b95c4b637 100644
--- a/modoboa/admin/tests/test_import_.py
+++ b/modoboa/admin/tests/test_import_.py
@@ -25,8 +25,8 @@ class ImportTestCase(ModoTestCase):
self.assertEqual(response.status_code, 200)
self.assertIn("Provide a CSV", response.content)
- f = ContentFile(b"""domain; domain1.com; 100; True
-domain; domain2.com; 200; False
+ f = ContentFile(b"""domain; domain1.com; 1000; 100; True
+domain; domain2.com; 1000; 200; False
domainalias; domalias1.com; domain1.com; True
""", name="domains.csv")
self.client.post(
@@ -36,6 +36,7 @@ domainalias; domalias1.com; domain1.com; True
)
admin = User.objects.get(username="admin")
dom = Domain.objects.get(name="domain1.com")
+ self.assertEqual(dom.quota, 1000)
self.assertEqual(dom.default_mailbox_quota, 100)
self.assertTrue(dom.enabled)
self.assertTrue(admin.is_owner(dom))
@@ -49,7 +50,7 @@ domainalias; domalias1.com; domain1.com; True
self.assertTrue(admin.is_owner(dom))
def test_import_domains_with_conflict(self):
- f = ContentFile(b"""domain;test.alias;10;True
+ f = ContentFile(b"""domain;test.alias;100;10;True
domainalias;test.alias;test.com;True
""", name="domains.csv")
resp = self.client.post(
@@ -160,7 +161,7 @@ account; user1@test.com; toto; User; One; True; SimpleUsers; user1@test.com; ; t
self.client.logout()
self.client.login(username="admin@test.com", password="toto")
f = ContentFile(b"""
-domain; domain2.com; 200; False
+domain; domain2.com; 1000; 200; False
""", name="identities.csv")
resp = self.client.post(
reverse("admin:identity_import"),
diff --git a/modoboa/limits/tests/test_import.py b/modoboa/limits/tests/test_import.py
index dc222f426..c3ca812b3 100644
--- a/modoboa/limits/tests/test_import.py
+++ b/modoboa/limits/tests/test_import.py
@@ -147,8 +147,8 @@ class UserLimitImportTestCase(LimitImportTestCase):
username=self.reseller.username, password="toto")
limit = self.reseller.userobjectlimit_set.get(name="domains")
self.assertFalse(limit.is_exceeded())
- f = ContentFile(b"""domain; domain1.com; 100; True
-domain; domain2.com; 200; False
+ f = ContentFile(b"""domain; domain1.com; 1000; 100; True
+domain; domain2.com; 1000; 200; False
""", name="domains.csv")
self.client.post(
reverse("admin:domain_import"), {
@@ -157,7 +157,7 @@ domain; domain2.com; 200; False
)
self.assertTrue(limit.is_exceeded())
- f = ContentFile(b"""domain; domain3.com; 100; True
+ f = ContentFile(b"""domain; domain3.com; 1000; 100; True
""", name="domains.csv")
response = self.client.post(
reverse("admin:domain_import"), {