From 0a902c05a3259630cac9b0a2bbf5bdd8ee9097b5 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Wed, 20 Apr 2016 22:17:37 +0200 Subject: [PATCH] New setting to enable/disable per-admin limits. see #799 --- modoboa/admin/tests/test_api.py | 2 ++ modoboa/limits/app_settings.py | 11 +++++++++++ modoboa/limits/handlers.py | 2 ++ 3 files changed, 15 insertions(+) diff --git a/modoboa/admin/tests/test_api.py b/modoboa/admin/tests/test_api.py index 144073442..58204920e 100644 --- a/modoboa/admin/tests/test_api.py +++ b/modoboa/admin/tests/test_api.py @@ -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")) diff --git a/modoboa/limits/app_settings.py b/modoboa/limits/app_settings.py index 42aaf5068..3e5ba0dfa 100644 --- a/modoboa/limits/app_settings.py +++ b/modoboa/limits/app_settings.py @@ -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", diff --git a/modoboa/limits/handlers.py b/modoboa/limits/handlers.py index 31674f224..fc847dc28 100644 --- a/modoboa/limits/handlers.py +++ b/modoboa/limits/handlers.py @@ -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)