Fixed disabling message_limit

This commit is contained in:
Spitap
2023-06-27 16:58:05 +02:00
parent a1e03ac117
commit d3e45962a2
3 changed files with 67 additions and 3 deletions
+13 -2
View File
@@ -152,11 +152,14 @@ class MailboxSerializer(serializers.ModelSerializer):
quota = serializers.CharField(required=False)
quota_usage = serializers.SerializerMethodField()
message_limit = serializers.CharField(
required=False, allow_null=True, allow_blank=True)
class Meta:
model = models.Mailbox
fields = (
"pk", "full_address", "use_domain_quota", "quota", "message_limit",
"quota_usage"
"pk", "full_address", "use_domain_quota", "quota",
"quota_usage", "message_limit"
)
def get_quota_usage(self, mb) -> int:
@@ -166,6 +169,14 @@ class MailboxSerializer(serializers.ModelSerializer):
"""Lower case address."""
return value.lower()
def validate_message_limit(self, value):
if not value:
return None
try:
return int(value)
except ValueError:
raise ValidationError(_("A valid integer is required."))
def validate_quota(self, value):
"""Convert quota to MB."""
return web_utils.size2integer(value, output_unit="MB")
+12 -1
View File
@@ -389,16 +389,27 @@ class MailboxSerializer(serializers.ModelSerializer):
quota = serializers.CharField(required=False)
message_limit = serializers.CharField(
required=False, allow_null=True, allow_blank=True)
class Meta:
model = models.Mailbox
fields = (
"pk", "use_domain_quota", "quota", "message_limit",
"pk", "use_domain_quota", "quota", "message_limit"
)
def validate_quota(self, value):
"""Convert quota to MB."""
return web_utils.size2integer(value, output_unit="MB")
def validate_message_limit(self, value):
if not value:
return None
try:
return int(value)
except ValueError:
raise ValidationError(_("A valid integer is required."))
def validate(self, data):
"""Check if quota is required."""
method = self.context["request"].method
+42
View File
@@ -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": ""
}
}
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])