mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Fixed disabling message_limit
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user