PEP8 fixes

This commit is contained in:
Antoine Nguyen
2015-01-14 14:05:53 +01:00
parent 39781e1600
commit 2684f9eae9
10 changed files with 154 additions and 91 deletions
+19 -14
View File
@@ -1,13 +1,15 @@
# coding: utf-8
from django.utils.translation import ugettext as _, ugettext_lazy
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.core.extensions import ModoExtension, exts_pool
from modoboa.lib import parameters, events
from modoboa.lib.exceptions import PermDeniedException, BadRequest, Conflict
from modoboa.lib.email_utils import split_mailbox
from modoboa.extensions.admin.models import (
Domain, DomainAlias, Mailbox, Alias
)
from modoboa.lib import parameters, events
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib.exceptions import PermDeniedException, BadRequest, Conflict
admin_events = [
"DomainCreated",
@@ -54,7 +56,8 @@ class AdminConsole(ModoExtension):
def load(self):
from modoboa.extensions.admin.app_settings import AdminParametersForm
parameters.register(AdminParametersForm, ugettext_lazy("Administration"))
parameters.register(
AdminParametersForm, ugettext_lazy("Administration"))
events.declare(admin_events)
def destroy(self):
@@ -80,15 +83,15 @@ def admin_menu(target, user):
entries = []
if user.has_perm("admin.view_domains"):
entries += [
{"name" : "domains",
"url" : reverse("admin:domain_list"),
"label" : _("Domains")}
{"name": "domains",
"url": reverse("admin:domain_list"),
"label": _("Domains")}
]
if user.has_perm("core.add_user") or user.has_perm("admin.add_alias"):
entries += [
{"name" : "identities",
"url" : reverse("admin:identity_list"),
"label" : _("Identities")},
{"name": "identities",
"url": reverse("admin:identity_list"),
"label": _("Identities")},
]
return entries
@@ -166,7 +169,8 @@ def import_account_mailbox(user, account, row):
domain = Domain.objects.get(name=domname)
except Domain.DoesNotExist:
raise BadRequest(
_("Account import failed (%s): domain does not exist" % account.username)
_("Account import failed (%s): domain does not exist"
% account.username)
)
if not user.can_access(domain):
raise PermDeniedException
@@ -175,7 +179,7 @@ def import_account_mailbox(user, account, row):
except Mailbox.DoesNotExist:
pass
else:
raise Conflict(_("Mailbox %s already exists" % account.email))
raise Conflict(_("Mailbox %s already exists" % account.email))
if len(row) == 1:
quota = None
else:
@@ -183,7 +187,8 @@ def import_account_mailbox(user, account, row):
quota = int(row[1].strip())
except ValueError:
raise BadRequest(
_("Account import failed (%s): wrong quota value" % account.username)
_("Account import failed (%s): wrong quota value"
% account.username)
)
use_domain_quota = True if not quota else False
mb = Mailbox(address=mailbox, domain=domain,
+40 -28
View File
@@ -1,19 +1,22 @@
"""Forms related to accounts management."""
from django import forms
from django.utils.translation import ugettext as _, ugettext_lazy
from django.http import QueryDict
from django.core.urlresolvers import reverse
from modoboa.lib import events, parameters
from modoboa.lib.exceptions import PermDeniedException, Conflict, NotFound
from modoboa.lib.permissions import get_account_roles
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib.form_utils import (
DomainNameField, DynamicForm, TabForms, WizardForm
)
from modoboa.lib.web_utils import render_to_json_response
from django.http import QueryDict
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.core.models import User
from modoboa.extensions.admin.models import (
Domain, Mailbox, Alias
)
from modoboa.lib import events, parameters
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib.exceptions import PermDeniedException, Conflict, NotFound
from modoboa.lib.form_utils import (
DomainNameField, DynamicForm, TabForms, WizardForm
)
from modoboa.lib.permissions import get_account_roles
from modoboa.lib.web_utils import render_to_json_response
class AccountFormGeneral(forms.ModelForm):
@@ -77,7 +80,8 @@ class AccountFormGeneral(forms.ModelForm):
del self.fields["is_active"]
self.fields["role"].initial = account.group
if not account.is_local \
and parameters.get_admin("LDAP_AUTH_METHOD", app="core") == "directbind":
and parameters.get_admin(
"LDAP_AUTH_METHOD", app="core") == "directbind":
del self.fields["password1"]
del self.fields["password2"]
@@ -90,7 +94,7 @@ class AccountFormGeneral(forms.ModelForm):
"""
if not self.instance.mailbox_set.count():
return False
return self.instance.mailbox_set.all()[0].domain.enabled == False
return not self.instance.mailbox_set.all()[0].domain.enabled
def clean_role(self):
if self.user.group == "DomainAdmins":
@@ -101,7 +105,7 @@ class AccountFormGeneral(forms.ModelForm):
def clean_username(self):
from django.core.validators import validate_email
if not "role" in self.cleaned_data:
if "role" not in self.cleaned_data:
return self.cleaned_data["username"]
if self.cleaned_data["role"] != "SimpleUsers":
return self.cleaned_data["username"]
@@ -113,7 +117,8 @@ class AccountFormGeneral(forms.ModelForm):
password1 = self.cleaned_data.get("password1", "")
password2 = self.cleaned_data["password2"]
if password1 != password2:
raise forms.ValidationError(_("The two password fields didn't match."))
raise forms.ValidationError(
_("The two password fields didn't match."))
return password2
def save(self, commit=True):
@@ -165,7 +170,8 @@ class AccountFormMail(forms.Form, DynamicForm):
"quota": 3
}
self.extra_fields = []
for fname, field in events.raiseQueryEvent('ExtraFormFields', 'mailform', self.mb):
result = events.raiseQueryEvent('ExtraFormFields', 'mailform', self.mb)
for fname, field in result:
self.fields[fname] = field
self.extra_fields.append(fname)
if self.mb is not None:
@@ -227,7 +233,7 @@ class AccountFormMail(forms.Form, DynamicForm):
events.raiseEvent("CanCreate", user, "mailboxes")
self.mb = Mailbox(address=locpart, domain=domain, user=account,
use_domain_quota=self.cleaned_data["quota_act"])
self.mb.set_quota(self.cleaned_data["quota"],
self.mb.set_quota(self.cleaned_data["quota"],
user.has_perm("admin.add_domain"))
self.mb.save(creator=user)
@@ -235,7 +241,8 @@ class AccountFormMail(forms.Form, DynamicForm):
newaddress = None
if self.cleaned_data["email"] != self.mb.full_address:
newaddress = self.cleaned_data["email"]
elif account.group == "SimpleUsers" and account.username != self.mb.full_address:
elif (account.group == "SimpleUsers" and
account.username != self.mb.full_address):
newaddress = account.username
if newaddress is not None:
self.mb.old_full_address = self.mb.full_address
@@ -267,7 +274,7 @@ class AccountFormMail(forms.Form, DynamicForm):
aliases.append(value)
for alias in self.mb.alias_set.all():
if not alias.full_address in aliases:
if alias.full_address not in aliases:
if len(alias.get_recipients()) >= 2:
continue
alias.delete()
@@ -331,9 +338,9 @@ class AccountPermissionsForm(forms.Form, DynamicForm):
if not hasattr(self, "account") or self.account is None:
return
for pos, domain in enumerate(Domain.objects.get_for_admin(self.account)):
for pos, dom in enumerate(Domain.objects.get_for_admin(self.account)):
name = "domains_%d" % (pos + 1)
self._create_field(DomainNameField, name, domain.name)
self._create_field(DomainNameField, name, dom.name)
if len(args) and isinstance(args[0], QueryDict):
self._load_from_qdict(args[0], "domains", DomainNameField)
@@ -346,20 +353,20 @@ class AccountPermissionsForm(forms.Form, DynamicForm):
continue
if value in ["", None]:
continue
if not value in current_domains:
if value not in current_domains:
domain = Domain.objects.get(name=value)
domain.add_admin(self.account)
for domain in Domain.objects.get_for_admin(self.account):
if not len(filter(lambda name: self.cleaned_data[name] == domain.name,
self.cleaned_data.keys())):
if not filter(lambda name: self.cleaned_data[name] == domain.name,
self.cleaned_data.keys()):
domain.remove_admin(self.account)
class AccountForm(TabForms):
"""Account edition form.
"""
"""Account edition form."""
def __init__(self, request, *args, **kwargs):
self.user = request.user
self.forms = [
@@ -369,8 +376,11 @@ class AccountForm(TabForms):
new_args=[self.user], mandatory=True),
dict(id="mail", title=_("Mail"), formtpl="admin/mailform.html",
cls=AccountFormMail),
dict(id="perms", title=_("Permissions"), formtpl="admin/permsform.html",
cls=AccountPermissionsForm)
dict(
id="perms", title=_("Permissions"),
formtpl="admin/permsform.html",
cls=AccountPermissionsForm
)
]
cbargs = [self.user]
if "instances" in kwargs:
@@ -402,7 +412,9 @@ class AccountForm(TabForms):
return False
return True
if False in events.raiseQueryEvent("CheckExtraAccountForm", self.account, form):
extra_forms = events.raiseQueryEvent(
"CheckExtraAccountForm", self.account, form)
if False in extra_forms:
return False
return True
+11 -7
View File
@@ -1,14 +1,17 @@
"""Forms related to aliases management."""
from django import forms
from django.utils.translation import ugettext as _, ugettext_lazy
from django.http import QueryDict
from modoboa.lib.exceptions import BadRequest, NotFound, Conflict
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib.form_utils import (
DynamicForm
)
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.extensions.admin.models import (
Domain, Mailbox, Alias
)
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib.exceptions import BadRequest, NotFound, Conflict
from modoboa.lib.form_utils import (
DynamicForm
)
class AliasForm(forms.ModelForm, DynamicForm):
@@ -109,7 +112,8 @@ class AliasForm(forms.ModelForm, DynamicForm):
rcpt = None
if rcpt is None:
try:
rcpt = Mailbox.objects.get(domain=domain, address=local_part)
rcpt = Mailbox.objects.get(
domain=domain, address=local_part)
except Mailbox.DoesNotExist:
raise NotFound(
_("Local recipient %s not found" % v)
+13 -9
View File
@@ -1,19 +1,21 @@
"""Forms related to domains management."""
from django import forms
from django.core.urlresolvers import reverse
from django.http import QueryDict
from django.utils.translation import ugettext as _, ugettext_lazy
from django.core.urlresolvers import reverse
from modoboa.core.models import User
from modoboa.extensions.admin.lib import check_if_domain_exists
from modoboa.extensions.admin.models import (
Domain, DomainAlias, Mailbox, Alias, Quota
)
from modoboa.lib import events, parameters
from modoboa.lib.exceptions import ModoboaException, Conflict
from modoboa.lib.form_utils import (
DomainNameField, YesNoField, WizardForm, DynamicForm, TabForms
)
from modoboa.lib.web_utils import render_to_json_response
from modoboa.core.models import User
from modoboa.extensions.admin.lib import check_if_domain_exists
from modoboa.extensions.admin.models import (
Domain, DomainAlias, Mailbox, Alias, Quota
)
class DomainFormGeneral(forms.ModelForm, DynamicForm):
@@ -153,12 +155,13 @@ class DomainFormGeneral(forms.ModelForm, DynamicForm):
continue
aliases.append(v)
for dalias in d.domainalias_set.all():
if not dalias.name in aliases:
if dalias.name not in aliases:
dalias.delete()
else:
aliases.remove(dalias.name)
if aliases:
events.raiseEvent("CanCreate", user, "domain_aliases", len(aliases))
events.raiseEvent(
"CanCreate", user, "domain_aliases", len(aliases))
for alias in aliases:
try:
d.domainalias_set.get(name=alias)
@@ -207,7 +210,8 @@ class DomainFormOptions(forms.Form):
def __init__(self, user, *args, **kwargs):
super(DomainFormOptions, self).__init__(*args, **kwargs)
if False in events.raiseQueryEvent('UserCanSetRole', user, 'DomainAdmins'):
result = events.raiseQueryEvent('UserCanSetRole', user, 'DomainAdmins')
if False in result:
self.fields = {}
return
if args:
+9 -4
View File
@@ -1,10 +1,13 @@
"""Forms related to forwards management."""
from django import forms
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.lib.exceptions import BadRequest, PermDeniedException
from modoboa.lib.email_utils import split_mailbox
from modoboa.extensions.admin.models import (
Domain
)
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib.exceptions import BadRequest, PermDeniedException
class ForwardForm(forms.Form):
@@ -12,12 +15,14 @@ class ForwardForm(forms.Form):
label=ugettext_lazy("Recipient(s)"),
widget=forms.Textarea(attrs={"class": "form-control"}),
required=False,
help_text=ugettext_lazy("Indicate one or more recipients separated by a ','")
help_text=ugettext_lazy(
"Indicate one or more recipients separated by a ','")
)
keepcopies = forms.BooleanField(
label=ugettext_lazy("Keep local copies"),
required=False,
help_text=ugettext_lazy("Forward messages and store copies into your local mailbox")
help_text=ugettext_lazy(
"Forward messages and store copies into your local mailbox")
)
def parse_dest(self):
+12 -1
View File
@@ -1,8 +1,13 @@
"""Forms related to import operations."""
from django import forms
from django.utils.translation import ugettext_lazy
class ImportDataForm(forms.Form):
"""Base form to import objects."""
sourcefile = forms.FileField(label=ugettext_lazy("Select a file"))
sepchar = forms.CharField(
label=ugettext_lazy("Separator"),
@@ -26,7 +31,13 @@ class ImportDataForm(forms.Form):
class ImportIdentitiesForm(ImportDataForm):
"""A form to import identities."""
crypt_password = forms.BooleanField(
label=ugettext_lazy("Crypt passwords"), required=False,
help_text=ugettext_lazy("Check this option if passwords contained in your file are not crypted")
help_text=ugettext_lazy(
"Check this option if passwords contained in your file "
"are not crypted"
)
)
+12 -8
View File
@@ -1,13 +1,17 @@
import reversion
"""Models related to aliases management."""
from django.db import models
from django.utils.translation import ugettext as _, ugettext_lazy
import reversion
from .base import AdminObject
from .domain import Domain
from .mailbox import Mailbox
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib.exceptions import (
PermDeniedException, BadRequest, Conflict
)
from .base import AdminObject
from .domain import Domain
from .mailbox import Mailbox
class Alias(AdminObject):
@@ -108,16 +112,16 @@ class Alias(AdminObject):
curmboxes = self.mboxes.all()
for rcpt in int_rcpts:
if isinstance(rcpt, Alias):
if not rcpt in curaliases:
if rcpt not in curaliases:
self.aliases.add(rcpt)
continue
if not rcpt in curmboxes:
if rcpt not in curmboxes:
self.mboxes.add(rcpt)
for rcpt in curaliases:
if not rcpt in int_rcpts:
if rcpt not in int_rcpts:
self.aliases.remove(rcpt)
for rcpt in curmboxes:
if not rcpt in int_rcpts:
if rcpt not in int_rcpts:
self.mboxes.remove(rcpt)
def get_recipients(self, with_external=True):
+11 -6
View File
@@ -1,12 +1,16 @@
import reversion
"""Models related to domains management."""
from django.contrib.contenttypes import generic
from django.db import models
from django.db.models.manager import Manager
from django.utils.translation import ugettext as _, ugettext_lazy
from django.contrib.contenttypes import generic
import reversion
from .base import AdminObject
from modoboa.core.models import User, ObjectAccess
from modoboa.lib import events, parameters
from modoboa.lib.exceptions import BadRequest, Conflict
from modoboa.core.models import User, ObjectAccess
from .base import AdminObject
class DomainManager(Manager):
@@ -109,7 +113,7 @@ class Domain(AdminObject):
ungrant_access_to_object(mb, account)
ungrant_access_to_object(mb.user, account)
for al in self.alias_set.all():
ungrant_access_to_object(al, account)
ungrant_access_to_object(al, account)
def delete(self, fromuser, keepdir=False):
"""Custom delete method.
@@ -157,7 +161,8 @@ class Domain(AdminObject):
try:
self.quota = int(row[2].strip())
except ValueError:
raise BadRequest(_("Invalid quota value for domain '%s'" % self.name))
raise BadRequest(
_("Invalid quota value for domain '%s'" % self.name))
self.enabled = (row[3].strip() in ["True", "1", "yes", "y"])
self.save(creator=user)
@@ -1,9 +1,13 @@
import reversion
"""Models related to domain aliases management."""
from django.db import models
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.lib.exceptions import BadRequest, Conflict
import reversion
from .base import AdminObject
from .domain import Domain
from modoboa.lib.exceptions import BadRequest, Conflict
class DomainAlias(AdminObject):
+21 -12
View File
@@ -1,19 +1,24 @@
"""Models related to mailboxes management."""
import os
import pwd
import reversion
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.db.models import Q
from django.db.models.manager import Manager
from django.contrib.contenttypes.models import ContentType
from django.utils.translation import ugettext as _, ugettext_lazy
from django.db.models.signals import pre_delete
from django.dispatch import receiver
from django.utils.translation import ugettext as _, ugettext_lazy
import reversion
from .base import AdminObject
from .domain import Domain
from modoboa.core.models import User
from modoboa.lib import parameters, events
from modoboa.lib.exceptions import BadRequest, InternalError
from modoboa.lib.sysutils import exec_cmd
from modoboa.core.models import User
from .base import AdminObject
from .domain import Domain
class Quota(models.Model):
@@ -72,7 +77,8 @@ class Mailbox(AdminObject):
address = models.CharField(
ugettext_lazy('address'), max_length=252,
help_text=ugettext_lazy("Mailbox address (without the @domain.tld part)")
help_text=ugettext_lazy(
"Mailbox address (without the @domain.tld part)")
)
quota = models.PositiveIntegerField()
use_domain_quota = models.BooleanField(default=False)
@@ -112,7 +118,7 @@ class Mailbox(AdminObject):
@property
def mail_home(self):
"""Retrieve the home directory of this mailbox.
The home directory refers to the place on the file system
where the mailbox data is stored.
@@ -131,9 +137,10 @@ class Mailbox(AdminObject):
options['sudo_user'] = mbowner
code, output = exec_cmd(
"doveadm user %s -f home" % self.full_address, **options
)
)
if code:
raise InternalError(_("Failed to retrieve mailbox location (%s)" % output))
raise InternalError(
_("Failed to retrieve mailbox location (%s)" % output))
self.__mail_home = output.strip()
return self.__mail_home
@@ -273,7 +280,9 @@ class Mailbox(AdminObject):
We try to delete the associated quota in the same time (it may
has already been removed if we're deleting a domain).
:param bool keepdir: delete the mailbox home dir on the filesystem or not
:param bool keepdir: delete the mailbox home dir on the
filesystem or not
"""
try:
q = Quota.objects.get(username=self.full_address)
@@ -322,4 +331,4 @@ class MailboxOperation(models.Model):
def __str__(self):
if self.type == 'rename':
return 'Rename %s -> %s' % (self.argument, self.mailbox.mail_home)
return 'Delete %s' % self.argument
return 'Delete %s' % self.argument