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()