mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-20 06:08:35 +02:00
PEP8 fixes
This commit is contained in:
@@ -1,42 +1,52 @@
|
||||
"""Custom settings."""
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from modoboa.lib.parameters import AdminParametersForm
|
||||
|
||||
from modoboa.lib.form_utils import SeparatorField
|
||||
from modoboa.lib.parameters import AdminParametersForm
|
||||
|
||||
|
||||
class ParametersForm(AdminParametersForm):
|
||||
app = "limits"
|
||||
|
||||
defv_sep = SeparatorField(label=_("Default limits"))
|
||||
|
||||
|
||||
deflt_domain_admins_limit = forms.IntegerField(
|
||||
label=_("Domain admins"),
|
||||
initial=0,
|
||||
help_text=_("Maximum number of allowed domain administrators for a new administrator"),
|
||||
help_text=_(
|
||||
"Maximum number of allowed domain administrators for a new "
|
||||
"administrator"
|
||||
),
|
||||
widget=forms.widgets.TextInput(attrs={"class": "col-md-1 form-control"})
|
||||
)
|
||||
deflt_domains_limit = forms.IntegerField(
|
||||
label=_("Domains"),
|
||||
initial=0,
|
||||
help_text=_("Maximum number of allowed domains for a new administrator"),
|
||||
help_text=_(
|
||||
"Maximum number of allowed domains for a new administrator"),
|
||||
widget=forms.widgets.TextInput(attrs={"class": "col-md-1 form-control"})
|
||||
)
|
||||
deflt_domain_aliases_limit = forms.IntegerField(
|
||||
label=_("Domain aliases"),
|
||||
initial=0,
|
||||
help_text=_("Maximum number of allowed domain aliases for a new administrator"),
|
||||
help_text=_(
|
||||
"Maximum number of allowed domain aliases for a new administrator"),
|
||||
widget=forms.widgets.TextInput(attrs={"class": "col-md-1 form-control"})
|
||||
)
|
||||
deflt_mailboxes_limit = forms.IntegerField(
|
||||
label=_("Mailboxes"),
|
||||
initial=0,
|
||||
help_text=_("Maximum number of allowed mailboxes for a new administrator"),
|
||||
help_text=_(
|
||||
"Maximum number of allowed mailboxes for a new administrator"),
|
||||
widget=forms.widgets.TextInput(attrs={"class": "col-md-1 form-control"})
|
||||
)
|
||||
deflt_mailbox_aliases_limit = forms.IntegerField(
|
||||
label=_("Mailbox aliases"),
|
||||
initial=0,
|
||||
help_text=_("Maximum number of allowed aliases for a new administrator"),
|
||||
help_text=_(
|
||||
"Maximum number of allowed aliases for a new administrator"),
|
||||
widget=forms.widgets.TextInput(attrs={"class": "col-md-1 form-control"})
|
||||
)
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
"""
|
||||
from modoboa.lib import events
|
||||
from modoboa.lib.permissions import get_object_owner
|
||||
from .lib import LimitReached, inc_limit_usage, dec_limit_usage
|
||||
from .models import LimitTemplates, LimitsPool
|
||||
from modoboa.lib import events
|
||||
from modoboa.lib.permissions import get_object_owner
|
||||
|
||||
|
||||
def check_limit(user, lname, count=1):
|
||||
@@ -124,7 +124,7 @@ def can_create_new_object(user, objtype, count=1):
|
||||
@events.observe("AccountCreated")
|
||||
def create_pool(user):
|
||||
owner = get_object_owner(user)
|
||||
if not owner.group in ['SuperAdmins', 'Resellers']:
|
||||
if owner.group not in ['SuperAdmins', 'Resellers']:
|
||||
return
|
||||
|
||||
if user.group == 'DomainAdmins':
|
||||
@@ -177,7 +177,7 @@ def on_account_modified(old, new):
|
||||
p.save()
|
||||
p.create_limits(owner)
|
||||
|
||||
if not new.group in ["DomainAdmins", "Resellers"]:
|
||||
if new.group not in ["DomainAdmins", "Resellers"]:
|
||||
move_pool_resource(owner, new)
|
||||
|
||||
if old.oldgroup == "DomainAdmins":
|
||||
@@ -193,7 +193,7 @@ def on_account_modified(old, new):
|
||||
@events.observe("AccountDeleted")
|
||||
def on_account_deleted(account, byuser, **kwargs):
|
||||
owner = get_object_owner(account)
|
||||
if not owner.group in ["SuperAdmins", "Resellers"]:
|
||||
if owner.group not in ["SuperAdmins", "Resellers"]:
|
||||
return
|
||||
|
||||
move_pool_resource(owner, account)
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""Custom forms."""
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
||||
from modoboa.lib import parameters
|
||||
from .models import LimitTemplates
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from .lib import BadLimitValue, UnsufficientResource
|
||||
from .models import LimitTemplates
|
||||
from modoboa.lib import parameters
|
||||
|
||||
|
||||
class ResourcePoolForm(forms.Form):
|
||||
@@ -15,7 +19,9 @@ class ResourcePoolForm(forms.Form):
|
||||
del kwargs["instance"]
|
||||
super(ResourcePoolForm, self).__init__(*args, **kwargs)
|
||||
for tpl in LimitTemplates().templates:
|
||||
if len(tpl) > 3 and self.account is not None and self.account.group != tpl[3]:
|
||||
if len(tpl) <= 3:
|
||||
continue
|
||||
if self.account is not None and self.account.group != tpl[3]:
|
||||
continue
|
||||
self.fields[tpl[0]] = forms.IntegerField(
|
||||
label=tpl[1], help_text=tpl[2]
|
||||
@@ -31,7 +37,7 @@ class ResourcePoolForm(forms.Form):
|
||||
def clean(self):
|
||||
cleaned_data = super(ResourcePoolForm, self).clean()
|
||||
for lname in self.fields.keys():
|
||||
if not lname in self._errors and cleaned_data[lname] < -1:
|
||||
if lname not in self._errors and cleaned_data[lname] < -1:
|
||||
self._errors[lname] = self.error_class([_('Invalid limit')])
|
||||
del cleaned_data[lname]
|
||||
return cleaned_data
|
||||
@@ -42,7 +48,9 @@ class ResourcePoolForm(forms.Form):
|
||||
# The following lines will become useless in a near
|
||||
# future.
|
||||
if self.fields[lname].initial == -2:
|
||||
self.fields[lname].initial = parameters.get_admin("DEFLT_%s" % lname.upper())
|
||||
self.fields[lname].initial = parameters.get_admin(
|
||||
"DEFLT_%s" %
|
||||
lname.upper())
|
||||
|
||||
def allocate_from_pool(self, limit, pool):
|
||||
"""Allocate resource using an existing pool.
|
||||
@@ -76,7 +84,7 @@ class ResourcePoolForm(forms.Form):
|
||||
|
||||
owner = get_object_owner(self.account)
|
||||
for ltpl in LimitTemplates().templates:
|
||||
if not ltpl[0] in self.cleaned_data:
|
||||
if ltpl[0] not in self.cleaned_data:
|
||||
continue
|
||||
l = self.account.limitspool.limit_set.get(name=ltpl[0])
|
||||
if not owner.is_superuser:
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
"""General event callbacks."""
|
||||
|
||||
from django.utils.translation import ugettext as _
|
||||
from modoboa.lib import events
|
||||
from modoboa.extensions.limits.models import LimitTemplates
|
||||
|
||||
from modoboa.extensions.limits.forms import ResourcePoolForm
|
||||
from modoboa.extensions.limits.models import LimitTemplates
|
||||
from modoboa.lib import events
|
||||
|
||||
|
||||
@events.observe("GetExtraRoles")
|
||||
@@ -37,10 +40,10 @@ def display_pool_usage(user, target, currentpage):
|
||||
|
||||
@events.observe("ExtraAccountForm")
|
||||
def extra_account_form(user, account=None):
|
||||
if not user.group in ["SuperAdmins", "Resellers"]:
|
||||
if user.group not in ["SuperAdmins", "Resellers"]:
|
||||
return []
|
||||
if account is not None and \
|
||||
not account.group in ["Resellers", "DomainAdmins"]:
|
||||
account.group not in ["Resellers", "DomainAdmins"]:
|
||||
return []
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""Models for the limits extensions."""
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
||||
from modoboa.lib import parameters
|
||||
|
||||
from modoboa.lib import parameters, events
|
||||
from modoboa.lib.singleton import Singleton
|
||||
from django.conf import settings
|
||||
from modoboa.lib import events
|
||||
|
||||
|
||||
class LimitTemplates(Singleton):
|
||||
@@ -12,23 +15,27 @@ class LimitTemplates(Singleton):
|
||||
def __init__(self):
|
||||
self.__templates = [
|
||||
("domain_admins_limit", ugettext_lazy("Domain admins"),
|
||||
ugettext_lazy("Maximum number of domain administrators this user can create"),
|
||||
ugettext_lazy("Maximum number of domain administrators this user "
|
||||
"can create"),
|
||||
'Resellers'),
|
||||
("domains_limit", ugettext_lazy("Domains"),
|
||||
ugettext_lazy("Maximum number of domains this user can create"),
|
||||
'Resellers'),
|
||||
("domain_aliases_limit", ugettext_lazy("Domain aliases"),
|
||||
ugettext_lazy("Maximum number of domain aliases this user can create"),
|
||||
ugettext_lazy(
|
||||
"Maximum number of domain aliases this user can create"),
|
||||
'Resellers'),
|
||||
("mailboxes_limit", ugettext_lazy("Mailboxes"),
|
||||
ugettext_lazy("Maximum number of mailboxes this user can create")),
|
||||
("mailbox_aliases_limit", ugettext_lazy("Mailbox aliases"),
|
||||
ugettext_lazy("Maximum number of mailbox aliases this user can create"))
|
||||
ugettext_lazy("Maximum number of mailbox aliases this user "
|
||||
"can create"))
|
||||
]
|
||||
|
||||
|
||||
@property
|
||||
def templates(self):
|
||||
return self.__templates + events.raiseQueryEvent('GetExtraLimitTemplates')
|
||||
return self.__templates + \
|
||||
events.raiseQueryEvent('GetExtraLimitTemplates')
|
||||
|
||||
|
||||
class LimitsPool(models.Model):
|
||||
@@ -47,8 +54,10 @@ class LimitsPool(models.Model):
|
||||
try:
|
||||
Limit.objects.get(name=ltpl[0], pool=self)
|
||||
except Limit.DoesNotExist:
|
||||
maxvalue = int(parameters.get_admin("DEFLT_%s" % ltpl[0].upper())) \
|
||||
maxvalue = (
|
||||
int(parameters.get_admin("DEFLT_%s" % ltpl[0].upper()))
|
||||
if creator.is_superuser else 0
|
||||
)
|
||||
Limit.objects.create(
|
||||
name=ltpl[0], pool=self, maxvalue=maxvalue
|
||||
)
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
"""Test cases for the limits extension."""
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from modoboa.lib.tests import ExtTestCase
|
||||
from modoboa.lib import parameters
|
||||
from modoboa.core.models import User
|
||||
|
||||
from modoboa.core.factories import UserFactory
|
||||
from modoboa.core.models import User
|
||||
from modoboa.extensions.admin.factories import (
|
||||
populate_database
|
||||
)
|
||||
from modoboa.extensions.admin.models import Alias, Domain
|
||||
from modoboa.extensions.limits.models import LimitTemplates
|
||||
from modoboa.lib import parameters
|
||||
from modoboa.lib.tests import ExtTestCase
|
||||
|
||||
|
||||
class PermissionsTestCase(ExtTestCase):
|
||||
@@ -142,8 +145,8 @@ class DomainAdminTestCase(ResourceTestCase):
|
||||
resp = self._create_alias('alias3@test.com', status=403)
|
||||
self._check_limit('mailbox_aliases', 2, 2)
|
||||
self.ajax_post(
|
||||
reverse('admin:alias_delete') + '?selection=%d' \
|
||||
% Alias.objects.get(address='alias2', domain__name='test.com').id,
|
||||
reverse('admin:alias_delete') + '?selection=%d'
|
||||
% Alias.objects.get(address='alias2', domain__name='test.com').id,
|
||||
{}
|
||||
)
|
||||
self._check_limit('mailbox_aliases', 1, 2)
|
||||
@@ -206,10 +209,14 @@ class ResellerTestCase(ResourceTestCase):
|
||||
self._check_limit('domain_admins', 1, 2)
|
||||
self._create_account('admin2@domain.tld', role='DomainAdmins')
|
||||
self._check_limit('domain_admins', 2, 2)
|
||||
resp = self._create_account('admin3@domain.tld', role='DomainAdmins', status=400)
|
||||
resp = self._create_account(
|
||||
'admin3@domain.tld',
|
||||
role='DomainAdmins',
|
||||
status=400)
|
||||
self.assertEqual(
|
||||
resp['form_errors']['role'][0],
|
||||
'Select a valid choice. DomainAdmins is not one of the available choices.'
|
||||
'Select a valid choice. DomainAdmins is not one of the available '
|
||||
'choices.'
|
||||
)
|
||||
self._check_limit('domain_admins', 2, 2)
|
||||
|
||||
@@ -227,7 +234,8 @@ class ResellerTestCase(ResourceTestCase):
|
||||
)
|
||||
self.assertEqual(
|
||||
resp['form_errors']['role'][0],
|
||||
'Select a valid choice. DomainAdmins is not one of the available choices.'
|
||||
'Select a valid choice. DomainAdmins is not one of the available '
|
||||
'choices.'
|
||||
)
|
||||
self._check_limit('domain_admins', 2, 2)
|
||||
|
||||
|
||||
@@ -3,4 +3,4 @@ from django.conf.urls import patterns
|
||||
urlpatterns = patterns(
|
||||
'modoboa.extensions.limits.views',
|
||||
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user