Add flag to enable/disable per-domain limits.

see #799
This commit is contained in:
Antoine Nguyen
2016-04-16 15:40:41 +02:00
parent 49e5362f41
commit 5b0525f257
3 changed files with 20 additions and 2 deletions
+13 -1
View File
@@ -3,7 +3,7 @@
from django import forms
from django.utils.translation import ugettext_lazy as _
from modoboa.lib.form_utils import SeparatorField
from modoboa.lib.form_utils import SeparatorField, YesNoField
from modoboa.lib.parameters import AdminParametersForm
@@ -67,6 +67,12 @@ class ParametersForm(AdminParametersForm):
domain_limits_sep = SeparatorField(label=_("Default per-domain limits"))
enable_domain_limits = YesNoField(
label=_("Enable per-domain limits"),
initial="no",
help_text=_("Enable or disable per-domain limits")
)
# deflt_domain_domain_admins_limit = forms.IntegerField(
# label=_("Domain admins"),
# initial=0,
@@ -110,6 +116,12 @@ class ParametersForm(AdminParametersForm):
attrs={"class": "col-md-1 form-control"})
)
visibility_rules = {
"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",
}
def __init__(self, *args, **kwargs):
super(AdminParametersForm, self).__init__(*args, **kwargs)
self._load_extra_parameters('A')
+5 -1
View File
@@ -2,7 +2,7 @@
from django.utils.translation import ugettext as _
from modoboa.lib import events
from modoboa.lib import events, parameters
from . import forms
from . import utils
@@ -53,6 +53,8 @@ def extra_account_form(user, account=None):
@events.observe("ExtraDomainForm")
def extra_domain_form(user, domain):
"""Include domain limits form."""
if parameters.get_admin("ENABLE_DOMAIN_LIMITS") == "no":
return []
if not user.has_perm("admin.change_domain"):
return []
return [{
@@ -64,6 +66,8 @@ def extra_domain_form(user, domain):
@events.observe("FillDomainInstances")
def fill_domain_instances(user, domain, instances):
"""Set domain instance for resources form."""
if parameters.get_admin("ENABLE_DOMAIN_LIMITS") == "no":
return
if not user.has_perm("admin.change_domain"):
return
instances["resources"] = domain
+2
View File
@@ -24,6 +24,8 @@ def check_object_limit(sender, context, object_type, **kwargs):
return True
limit = context.userobjectlimit_set.get(name=object_type)
elif context.__class__.__name__ == "Domain":
if parameters.get_admin("ENABLE_DOMAIN_LIMITS") == "no":
return
limit = context.domainobjectlimit_set.get(name=object_type)
else:
raise NotImplementedError