From 2684f9eae9f14e743b688dae07f2f0c842c05ae0 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Wed, 14 Jan 2015 14:05:53 +0100 Subject: [PATCH] PEP8 fixes --- modoboa/extensions/admin/__init__.py | 33 +++++---- modoboa/extensions/admin/forms/account.py | 68 +++++++++++-------- modoboa/extensions/admin/forms/alias.py | 18 +++-- modoboa/extensions/admin/forms/domain.py | 22 +++--- modoboa/extensions/admin/forms/forward.py | 13 ++-- modoboa/extensions/admin/forms/import_.py | 13 +++- modoboa/extensions/admin/models/alias.py | 20 +++--- modoboa/extensions/admin/models/domain.py | 17 +++-- .../extensions/admin/models/domain_alias.py | 8 ++- modoboa/extensions/admin/models/mailbox.py | 33 +++++---- 10 files changed, 154 insertions(+), 91 deletions(-) diff --git a/modoboa/extensions/admin/__init__.py b/modoboa/extensions/admin/__init__.py index 75dbd30fc..1c23ae3d7 100644 --- a/modoboa/extensions/admin/__init__.py +++ b/modoboa/extensions/admin/__init__.py @@ -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, diff --git a/modoboa/extensions/admin/forms/account.py b/modoboa/extensions/admin/forms/account.py index 568c0ed25..a010ec0dc 100644 --- a/modoboa/extensions/admin/forms/account.py +++ b/modoboa/extensions/admin/forms/account.py @@ -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 diff --git a/modoboa/extensions/admin/forms/alias.py b/modoboa/extensions/admin/forms/alias.py index d66e2820e..d54dad929 100644 --- a/modoboa/extensions/admin/forms/alias.py +++ b/modoboa/extensions/admin/forms/alias.py @@ -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) diff --git a/modoboa/extensions/admin/forms/domain.py b/modoboa/extensions/admin/forms/domain.py index 6ec676bbf..667ad6ef0 100644 --- a/modoboa/extensions/admin/forms/domain.py +++ b/modoboa/extensions/admin/forms/domain.py @@ -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: diff --git a/modoboa/extensions/admin/forms/forward.py b/modoboa/extensions/admin/forms/forward.py index f39a5ce5e..c4d1e4a7b 100644 --- a/modoboa/extensions/admin/forms/forward.py +++ b/modoboa/extensions/admin/forms/forward.py @@ -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): diff --git a/modoboa/extensions/admin/forms/import_.py b/modoboa/extensions/admin/forms/import_.py index f63017037..0091e4ba8 100644 --- a/modoboa/extensions/admin/forms/import_.py +++ b/modoboa/extensions/admin/forms/import_.py @@ -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" + ) ) diff --git a/modoboa/extensions/admin/models/alias.py b/modoboa/extensions/admin/models/alias.py index 7a1687e44..a44ea9bf9 100644 --- a/modoboa/extensions/admin/models/alias.py +++ b/modoboa/extensions/admin/models/alias.py @@ -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): diff --git a/modoboa/extensions/admin/models/domain.py b/modoboa/extensions/admin/models/domain.py index 5d8566d62..e03a36d02 100644 --- a/modoboa/extensions/admin/models/domain.py +++ b/modoboa/extensions/admin/models/domain.py @@ -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) diff --git a/modoboa/extensions/admin/models/domain_alias.py b/modoboa/extensions/admin/models/domain_alias.py index 51b542dd0..a0ab23bfc 100644 --- a/modoboa/extensions/admin/models/domain_alias.py +++ b/modoboa/extensions/admin/models/domain_alias.py @@ -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): diff --git a/modoboa/extensions/admin/models/mailbox.py b/modoboa/extensions/admin/models/mailbox.py index 631dbb2ff..fcc46e52c 100644 --- a/modoboa/extensions/admin/models/mailbox.py +++ b/modoboa/extensions/admin/models/mailbox.py @@ -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