diff --git a/frontend/src/components/identities/AccountMailboxForm.vue b/frontend/src/components/identities/AccountMailboxForm.vue
index 06fd0a8db..6e69a0347 100644
--- a/frontend/src/components/identities/AccountMailboxForm.vue
+++ b/frontend/src/components/identities/AccountMailboxForm.vue
@@ -24,15 +24,21 @@
/>
-
+
+
+
@@ -94,6 +100,9 @@ export default {
if (this.form.role === 'SimpleUsers') {
this.$set(this.form.mailbox, 'full_address', this.form.username)
}
+ if (newValue.mailbox.message_limit === '') {
+ this.form.mailbox.message_limit = null
+ }
},
deep: true
}
diff --git a/modoboa/admin/api/v2/tests.py b/modoboa/admin/api/v2/tests.py
index fcea7e95b..819d68378 100644
--- a/modoboa/admin/api/v2/tests.py
+++ b/modoboa/admin/api/v2/tests.py
@@ -258,6 +258,48 @@ class AccountViewSetTestCase(ModoAPITestCase):
resp = self.client.patch(url, data, format="json")
self.assertEqual(resp.status_code, 200)
+ def test_message_limit_update(self):
+ account = core_models.User.objects.get(username="user@test.com")
+ url = reverse("v2:account-detail", args=[account.pk])
+ data = {
+ "username": "user@test.com",
+ "role": "SimpleUsers",
+ "password": "Toto12345",
+ "mailbox": {
+ "message_limit": 10
+ }
+ }
+ resp = self.client.patch(url, data, format="json")
+ self.assertEqual(resp.status_code, 200)
+ account.refresh_from_db()
+ self.assertEqual(account.mailbox.message_limit, 10)
+
+ data = {
+ "username": "user@test.com",
+ "role": "SimpleUsers",
+ "password": "Toto12345",
+ "mailbox": {
+ "quota": 10
+ }
+ }
+ resp = self.client.patch(url, data, format="json")
+ self.assertEqual(resp.status_code, 200)
+ account.refresh_from_db()
+ self.assertEqual(account.mailbox.message_limit, 10)
+
+ data = {
+ "username": "user@test.com",
+ "role": "SimpleUsers",
+ "password": "Toto12345",
+ "mailbox": {
+ "message_limit": None
+ }
+ }
+ resp = self.client.patch(url, data, format="json")
+ self.assertEqual(resp.status_code, 200)
+ account.refresh_from_db()
+ self.assertEqual(account.mailbox.message_limit, None)
+
def test_update_admin(self):
account = core_models.User.objects.get(username="admin")
url = reverse("v2:account-detail", args=[account.pk])
diff --git a/modoboa/admin/models/mailbox.py b/modoboa/admin/models/mailbox.py
index fd2612ab1..25075b03e 100644
--- a/modoboa/admin/models/mailbox.py
+++ b/modoboa/admin/models/mailbox.py
@@ -322,7 +322,8 @@ class Mailbox(mixins.MessageLimitMixin, AdminObject):
not user.userobjectlimit_set.get(name="quota").max_value
)
self.set_quota(values["quota"], override_rules)
- self.message_limit = values.get("message_limit")
+ if "message_limit" in values:
+ self.message_limit = values["message_limit"]
if newaddress:
self.rename(local_part, domain)
self.save()