New setting to enable/disable per-admin limits.

see #799
This commit is contained in:
Antoine Nguyen
2016-04-20 22:17:37 +02:00
parent ec698a71d5
commit 0a902c05a3
3 changed files with 15 additions and 0 deletions
+2
View File
@@ -9,6 +9,7 @@ from django.core.urlresolvers import reverse
from rest_framework.authtoken.models import Token
from modoboa.core import models as core_models
from modoboa.lib import parameters
from modoboa.lib.tests import ModoAPITestCase
from .. import factories
@@ -401,6 +402,7 @@ class AliasAPITestCase(ModoAPITestCase):
def setUpTestData(cls):
"""Create test data."""
super(AliasAPITestCase, cls).setUpTestData()
parameters.save_admin("ENABLE_ADMIN_LIMITS", "no", app="limits")
factories.populate_database()
cls.da_token = Token.objects.create(
user=core_models.User.objects.get(username="admin@test.com"))
+11
View File
@@ -12,6 +12,12 @@ class ParametersForm(AdminParametersForm):
defv_sep = SeparatorField(label=_("Default per-admin limits"))
enable_admin_limits = YesNoField(
label=_("Enable per-admin limits"),
initial="yes",
help_text=_("Enable or disable per-admin limits")
)
deflt_user_domain_admins_limit = forms.IntegerField(
label=_("Domain admins"),
initial=0,
@@ -117,6 +123,11 @@ class ParametersForm(AdminParametersForm):
)
visibility_rules = {
"deflt_user_domains_limit": "enable_admin_limits=yes",
"deflt_user_domain_aliases_limit": "enable_admin_limits=yes",
"deflt_user_mailboxes_limit": "enable_admin_limits=yes",
"deflt_user_mailbox_aliases_limit": "enable_admin_limits=yes",
"deflt_user_domain_admins_limit": "enable_admin_limits=yes",
"deflt_domain_mailboxes_limit": "enable_domain_limits=yes",
"deflt_domain_mailbox_aliases_limit": "enable_domain_limits=yes",
"deflt_domain_domain_aliases_limit": "enable_domain_limits=yes",
+2
View File
@@ -20,6 +20,8 @@ from . import utils
def check_object_limit(sender, context, object_type, **kwargs):
"""Check if user can create a new object."""
if context.__class__.__name__ == "User":
if parameters.get_admin("ENABLE_ADMIN_LIMITS") == "no":
return
if context.is_superuser:
return True
limit = context.userobjectlimit_set.get(name=object_type)