From 351d5830addbd0b9eeffd9872c0f3fced4eb12e0 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Sun, 10 Feb 2013 20:59:26 +0100 Subject: [PATCH] PEP8 compliance. --- modoboa/admin/__init__.py | 39 ++++--- modoboa/admin/exceptions.py | 2 +- modoboa/admin/forms.py | 120 ++++++++++++---------- modoboa/core/commands/__init__.py | 1 - modoboa/core/commands/help.py | 2 +- modoboa/core/management.py | 2 +- modoboa/tools/pfxadmin_migrate/migrate.py | 3 +- 7 files changed, 96 insertions(+), 73 deletions(-) diff --git a/modoboa/admin/__init__.py b/modoboa/admin/__init__.py index 6b5cd585a..09093b61c 100644 --- a/modoboa/admin/__init__.py +++ b/modoboa/admin/__init__.py @@ -5,6 +5,7 @@ from django.utils.translation import ugettext as _, ugettext_lazy from django.db.utils import DatabaseError from models import Extension, Mailbox + def update_uid(value): """VIRTUAL_UID modification callback @@ -14,15 +15,17 @@ def update_uid(value): """ Mailbox.objects.all().update(uid=Mailbox.resolve_uid(value)) + def update_gid(value): """VIRTUAL_GID modification callback Update all mailboxes with the new GID value - + :param value: the new GID """ Mailbox.objects.all().update(gid=Mailbox.resolve_gid(value)) + parameters.register_admin( "AUTHENTICATION_TYPE", type="list", deflt="local", values=[('local', ugettext_lazy("Local")), @@ -32,7 +35,7 @@ parameters.register_admin( parameters.register_admin( "CREATE_DIRECTORIES", type="list_yesno", deflt="yes", help=ugettext_lazy("Modoboa will handle mailbox creation on filesystem") - ) +) parameters.register_admin( "STORAGE_PATH", type="string", deflt="/var/vmail", help=ugettext_lazy("Path to the root directory where messages are stored") @@ -40,11 +43,11 @@ parameters.register_admin( parameters.register_admin( "VIRTUAL_UID", type="string", deflt="vmail", modify_cb=update_uid, help=ugettext_lazy("UID of the virtual user which owns domains/mailboxes/messages on the filesystem") - ) +) parameters.register_admin( "VIRTUAL_GID", type="string", deflt="vmail", modify_cb=update_gid, help=ugettext_lazy("GID of the virtual user which owns domains/mailboxes/messages on the filesystem") - ) +) parameters.register_admin( "MAILBOX_TYPE", type="list", deflt="maildir", values=[("maildir", "maildir"), ("mbox", "mbox")], @@ -54,24 +57,25 @@ parameters.register_admin( "MAILDIR_ROOT", type="string", deflt=".maildir", visible_if="MAILBOX_TYPE=maildir", help=ugettext_lazy("Sub-directory (inside the mailbox) where messages are stored when using the maildir format") - ) +) parameters.register_admin( "AUTO_ACCOUNT_REMOVAL", type="list_yesno", deflt="no", help=ugettext_lazy("When a mailbox is removed, also remove the associated account") - ) +) parameters.register_admin( "PASSWORD_SCHEME", type="list", deflt="md5crypt", values=[("crypt", "crypt"), - ("md5", "md5"), - ("md5crypt", "md5crypt"), - ("sha256", "sha256"), + ("md5", "md5"), + ("md5crypt", "md5crypt"), + ("sha256", "sha256"), ("plain", "plain")], help=ugettext_lazy("Scheme used to crypt mailbox passwords") - ) +) parameters.register_admin( "ITEMS_PER_PAGE", type="int", deflt=30, help=ugettext_lazy("Number of displayed items per page") - ) +) + def enabled_applications(): """Return the list of currently enabled extensions @@ -90,10 +94,14 @@ def enabled_applications(): result += [(ext.name, ext.name) for ext in exts] return sorted(result, key=lambda e: e[0]) -parameters.register_admin("DEFAULT_TOP_REDIRECTION", type="list", deflt="admin", - app="general", - values=enabled_applications(), - help=ugettext_lazy("The default redirection used when no application is specified")) + +parameters.register_admin( + "DEFAULT_TOP_REDIRECTION", type="list", deflt="admin", + app="general", + values=enabled_applications(), + help=ugettext_lazy("The default redirection used when no application is specified") +) + @events.observe("ExtDisabled") def unset_default_topredirection(extension): @@ -105,6 +113,7 @@ def unset_default_topredirection(extension): if topredirection == extension.name: parameters.save_admin("DEFAULT_TOP_REDIRECTION", "userprefs", app="general") + @events.observe("ExtDisabled", "ExtEnabled") def update_available_applications(extension): """Simple callback to update the list of available applications diff --git a/modoboa/admin/exceptions.py b/modoboa/admin/exceptions.py index cc89b4860..9ee8ced0d 100644 --- a/modoboa/admin/exceptions.py +++ b/modoboa/admin/exceptions.py @@ -6,10 +6,10 @@ from modoboa.lib.exceptions import ModoboaException + class AdminError(ModoboaException): """ Just a Custom exception to identify errors coming from the admin application. """ pass - diff --git a/modoboa/admin/forms.py b/modoboa/admin/forms.py index 958a0f997..cd0907271 100644 --- a/modoboa/admin/forms.py +++ b/modoboa/admin/forms.py @@ -10,29 +10,30 @@ from modoboa.lib.permissions import get_account_roles from modoboa.lib.formutils import * from modoboa.lib.permissions import * + class DomainFormGeneral(forms.ModelForm, DynamicForm): aliases = DomainNameField( - label=ugettext_lazy("Alias(es)"), + label=ugettext_lazy("Alias(es)"), required=False, help_text=ugettext_lazy("Alias(es) of this domain. Indicate only one name per input, press ENTER to add a new input.") - ) + ) class Meta: model = Domain fields = ("name", "quota", "aliases", "enabled") widgets = dict( - quota=forms.widgets.TextInput(attrs={"class" : "span1"}) - ) + quota=forms.widgets.TextInput(attrs={"class": "span1"}) + ) def __init__(self, *args, **kwargs): self.oldname = None - if kwargs.has_key("instance"): + if "instance" in kwargs: self.oldname = kwargs["instance"].name super(DomainFormGeneral, self).__init__(*args, **kwargs) if len(args) and isinstance(args[0], QueryDict): self._load_from_qdict(args[0], "aliases", DomainNameField) - elif kwargs.has_key("instance"): + elif "instance" in kwargs: d = kwargs["instance"] for pos, dalias in enumerate(d.domainalias_set.all()): name = "aliases_%d" % (pos + 1) @@ -96,23 +97,24 @@ class DomainFormGeneral(forms.ModelForm, DynamicForm): events.raiseEvent("DomainAliasCreated", user, al) for dalias in d.domainalias_set.all(): - if not len(filter(lambda name: self.cleaned_data[name] == dalias.name, + if not len(filter(lambda name: self.cleaned_data[name] == dalias.name, self.cleaned_data.keys())): dalias.delete() return d + class DomainForm(TabForms): def __init__(self, user, *args, **kwargs): self.user = user self.forms = [] if user.has_perm("admin.change_domain"): self.forms.append(dict( - id="general", title=_("General"), formtpl="admin/domain_general_form.html", - cls=DomainFormGeneral, mandatory=True - )) + id="general", title=_("General"), formtpl="admin/domain_general_form.html", + cls=DomainFormGeneral, mandatory=True + )) cbargs = [user] - if kwargs.has_key("instances"): + if "instances" in kwargs: cbargs += [kwargs["instances"]["general"]] self.forms += events.raiseQueryEvent("ExtraDomainForm", *cbargs) @@ -127,15 +129,16 @@ class DomainForm(TabForms): for f in self.forms: f["instance"].save(user) + class DlistForm(forms.ModelForm, DynamicForm): email = forms.EmailField( label=ugettext_lazy("Email address"), help_text=ugettext_lazy("The distribution list address. Use the '*' character to create a 'catchall' address (ex: *@domain.tld).") - ) + ) recipients = forms.EmailField( label=ugettext_lazy("Recipients"), required=False, help_text=ugettext_lazy("Mailbox(es) this alias will point to. Indicate only one address per input, press ENTER to add a new input.") - ) + ) class Meta: model = Alias @@ -148,7 +151,7 @@ class DlistForm(forms.ModelForm, DynamicForm): if len(args) and isinstance(args[0], QueryDict): self._load_from_qdict(args[0], "recipients", forms.EmailField) - elif kwargs.has_key("instance"): + elif "instance" in kwargs: dlist = kwargs["instance"] self.fields["email"].initial = dlist.full_address cpt = 1 @@ -225,20 +228,21 @@ class DlistForm(forms.ModelForm, DynamicForm): self.save_m2m() return dlist + class GenericAliasForm(forms.ModelForm): email = forms.EmailField( label=ugettext_lazy("Address"), help_text=ugettext_lazy("A valid e-mail address. Use the '*' character to create a 'catchall' address (ex: *@domain.tld).") - ) - + ) + class Meta: model = Alias - fields = ("enabled",) - + fields = ("enabled", ) + def __init__(self, user, *args, **kwargs): self.user = user super(GenericAliasForm, self).__init__(*args, **kwargs) - if kwargs.has_key("instance"): + if "instance" in kwargs: alias = kwargs["instance"] self.fields["email"].initial = alias.full_address @@ -262,16 +266,17 @@ class GenericAliasForm(forms.ModelForm): alias.domain = Domain.objects.get(name=domname) return alias + class AliasForm(GenericAliasForm): int_recipient = forms.EmailField( label=ugettext_lazy("Recipient"), help_text=ugettext_lazy("A local recipient address") - ) + ) def __init__(self, *args, **kwargs): super(AliasForm, self).__init__(*args, **kwargs) self.fields.keyOrder = ['email', 'int_recipient', 'enabled'] - if kwargs.has_key("instance"): + if "instance" in kwargs: alias = kwargs["instance"] if len(alias.mboxes.all()): self.fields["int_recipient"].initial = alias.mboxes.all()[0].full_address @@ -292,16 +297,17 @@ class AliasForm(GenericAliasForm): alias.save([self.rcpt_mb], []) return alias + class ForwardForm(GenericAliasForm): ext_recipient = forms.EmailField( label=ugettext_lazy("Recipient"), help_text=ugettext_lazy("An external recipient address") - ) + ) def __init__(self, *args, **kwargs): super(ForwardForm, self).__init__(*args, **kwargs) self.fields.keyOrder = ['email', 'ext_recipient', 'enabled'] - if kwargs.has_key("instance"): + if "instance" in kwargs: alias = kwargs["instance"] self.fields["ext_recipient"].initial = alias.extmboxes @@ -321,38 +327,41 @@ class ForwardForm(GenericAliasForm): alias.save([], [self.cleaned_data["ext_recipient"]]) return alias + class ImportDataForm(forms.Form): sourcefile = forms.FileField(label=ugettext_lazy("Select a file")) sepchar = forms.CharField(label=ugettext_lazy("Separator"), max_length=1, required=False) continue_if_exists = forms.BooleanField( label=ugettext_lazy("Continue on error"), required=False, help_text=ugettext_lazy("Don't treat duplicated objects as error") - ) + ) def __init__(self, *args, **kwargs): super(ImportDataForm, self).__init__(*args, **kwargs) - self.fields["sepchar"].widget.attrs = {"class" : "span1"} + self.fields["sepchar"].widget.attrs = {"class": "span1"} def clean_sepchar(self): if self.cleaned_data["sepchar"] == "": return ";" return str(self.cleaned_data["sepchar"]) + class ImportIdentitiesForm(ImportDataForm): 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") - ) + ) + class ExportDataForm(forms.Form): filename = forms.CharField( label=ugettext_lazy("File name"), max_length=100, required=False - ) + ) sepchar = forms.CharField(label=ugettext_lazy("Separator"), max_length=1, required=False) def __init__(self, *args, **kwargs): super(ExportDataForm, self).__init__(*args, **kwargs) - self.fields["sepchar"].widget.attrs = {"class" : "span1"} + self.fields["sepchar"].widget.attrs = {"class": "span1"} def clean_sepchar(self): if self.cleaned_data["sepchar"] == "": @@ -364,29 +373,32 @@ class ExportDataForm(forms.Form): return self.fields["filename"].initial return str(self.cleaned_data["filename"]) + class ExportDomainsForm(ExportDataForm): def __init__(self, *args, **kwargs): super(ExportDomainsForm, self).__init__(*args, **kwargs) self.fields["filename"].initial = "modoboa-domains.csv" + class ExportIdentitiesForm(ExportDataForm): def __init__(self, *args, **kwargs): super(ExportIdentitiesForm, self).__init__(*args, **kwargs) self.fields["filename"].initial = "modoboa-identities.csv" + class AccountFormGeneral(forms.ModelForm): username = forms.CharField(label=ugettext_lazy("Username"), max_length=254) role = forms.ChoiceField( label=ugettext_lazy("Role"), choices=[('', ugettext_lazy("Choose"))], help_text=ugettext_lazy("What level of permission this user will have") - ) + ) password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput) password2 = forms.CharField( - label=ugettext_lazy("Confirmation"), + label=ugettext_lazy("Confirmation"), widget=forms.PasswordInput, help_text=ugettext_lazy("Enter the same password as above, for verification.") - ) + ) class Meta: model = User @@ -404,10 +416,10 @@ class AccountFormGeneral(forms.ModelForm): self.fields["role"].choices = \ [('', ugettext_lazy("Choose"))] + get_account_roles(user) - if kwargs.has_key("instance"): + if "instance" in kwargs: if len(args) \ - and (args[0].get("password1", "") == "" \ - and args[0].get("password2", "") == ""): + and (args[0].get("password1", "") == "" + and args[0].get("password2", "") == ""): self.fields["password1"].required = False self.fields["password2"].required = False if user.group != "DomainAdmins": @@ -423,7 +435,7 @@ class AccountFormGeneral(forms.ModelForm): def clean_username(self): from django.core.validators import validate_email - if not self.cleaned_data.has_key("role"): + if not "role" in self.cleaned_data: return self.cleaned_data["username"] if self.cleaned_data["role"] != "SimpleUsers": return self.cleaned_data["username"] @@ -460,7 +472,7 @@ class AccountFormGeneral(forms.ModelForm): account.set_password(self.cleaned_data["password1"]) account.save() role = None - if self.cleaned_data.has_key("role"): + if "role" in self.cleaned_data: role = self.cleaned_data["role"] elif self.user.group == "DomainAdmins" and self.user != account: role = "SimpleUsers" @@ -480,22 +492,23 @@ class AccountFormGeneral(forms.ModelForm): account.save() return account + class AccountFormMail(forms.Form, DynamicForm): email = forms.EmailField(label=ugettext_lazy("E-mail"), required=False) quota = forms.IntegerField( label=ugettext_lazy("Quota"), required=False, help_text=_("Quota in MB for this mailbox. Leave empty to use the value defined at domain level."), - widget=forms.widgets.TextInput(attrs={"class" : "span1"}) - ) + widget=forms.widgets.TextInput(attrs={"class": "span1"}) + ) aliases = forms.EmailField( - label=ugettext_lazy("Alias(es)"), + label=ugettext_lazy("Alias(es)"), required=False, help_text=ugettext_lazy("Alias(es) of this mailbox. Indicate only one address per input, press ENTER to add a new input. Use the '*' character to create a 'catchall' alias (ex: *@domain.tld).") - ) + ) def __init__(self, *args, **kwargs): - if kwargs.has_key("instance"): + if "instance" in kwargs: self.mb = kwargs["instance"] del kwargs["instance"] super(AccountFormMail, self).__init__(*args, **kwargs) @@ -516,7 +529,7 @@ class AccountFormMail(forms.Form, DynamicForm): def clean_email(self): """Ensure lower case emails""" - return self.cleaned_data["email"].lower() + return self.cleaned_data["email"].lower() def save(self, user, account): if self.cleaned_data["email"] == "": @@ -537,7 +550,7 @@ class AccountFormMail(forms.Form, DynamicForm): except Mailbox.DoesNotExist: events.raiseEvent("CanCreate", user, "mailboxes") self.mb = Mailbox() - self.mb.save_from_user(locpart, domain, account, + self.mb.save_from_user(locpart, domain, account, self.cleaned_data["quota"], owner=user) grant_access_to_object(user, self.mb, is_owner=True) @@ -546,7 +559,7 @@ class AccountFormMail(forms.Form, DynamicForm): for admin in self.mb.domain.admins: grant_access_to_object(admin, self.mb) grant_access_to_object(admin, self.mb.user) - + else: if self.cleaned_data["email"] != self.mb.full_address: if self.mb.rename_dir(domname, locpart): @@ -585,7 +598,7 @@ class AccountFormMail(forms.Form, DynamicForm): for alias in self.mb.alias_set.all(): if len(alias.get_recipients()) >= 2: continue - if not len(filter(lambda name: self.cleaned_data[name] == alias.full_address, + if not len(filter(lambda name: self.cleaned_data[name] == alias.full_address, self.cleaned_data.keys())): events.raiseEvent("MailboxAliasDeleted", alias) ungrant_access_to_object(alias) @@ -593,18 +606,19 @@ class AccountFormMail(forms.Form, DynamicForm): return self.mb + class AccountPermissionsForm(forms.Form, DynamicForm): domains = DomainNameField( - label=ugettext_lazy("Domain(s)"), + label=ugettext_lazy("Domain(s)"), required=False, help_text=ugettext_lazy("Domain(s) that user administrates") - ) + ) def __init__(self, *args, **kwargs): - if kwargs.has_key("instance"): + if "instance" in kwargs: self.account = kwargs["instance"] del kwargs["instance"] - + super(AccountPermissionsForm, self).__init__(*args, **kwargs) if not hasattr(self, "account") or self.account is None: @@ -632,7 +646,7 @@ class AccountPermissionsForm(forms.Form, DynamicForm): grant_access_to_object(self.account, al) for domain in self.account.get_domains(): - if not len(filter(lambda name: self.cleaned_data[name] == domain.name, + if not len(filter(lambda name: self.cleaned_data[name] == domain.name, self.cleaned_data.keys())): ungrant_access_to_object(domain, self.account) for mb in domain.mailbox_set.all(): @@ -641,6 +655,7 @@ class AccountPermissionsForm(forms.Form, DynamicForm): for al in Alias.objects.filter(domain=domain): ungrant_access_to_object(al, self.account) + class AccountForm(TabForms): def __init__(self, user, *args, **kwargs): @@ -652,9 +667,9 @@ class AccountForm(TabForms): cls=AccountFormMail), dict(id="perms", title=_("Permissions"), formtpl="admin/permsform.html", cls=AccountPermissionsForm) - ] + ] cbargs = [user] - if kwargs.has_key("instances"): + if "instances" in kwargs: cbargs += [kwargs["instances"]["general"]] self.forms += events.raiseQueryEvent("ExtraAccountForm", *cbargs) @@ -693,4 +708,3 @@ class AccountForm(TabForms): return for f in self.forms[2:]: f["instance"].save() - diff --git a/modoboa/core/commands/__init__.py b/modoboa/core/commands/__init__.py index 8b1378917..e69de29bb 100644 --- a/modoboa/core/commands/__init__.py +++ b/modoboa/core/commands/__init__.py @@ -1 +0,0 @@ - diff --git a/modoboa/core/commands/help.py b/modoboa/core/commands/help.py index 882ff75f6..cd1ada463 100644 --- a/modoboa/core/commands/help.py +++ b/modoboa/core/commands/help.py @@ -11,7 +11,7 @@ class HelpCommand(Command): help='A command name') def handle(self, parsed_args): - if not self._commands.has_key(parsed_args.name): + if not parsed_args.name in self._commands: print >>sys.stderr, "Unknown command: %s" % parsed_args.name sys.exit(1) cmd = self._commands[parsed_args.name](self._commands) diff --git a/modoboa/core/management.py b/modoboa/core/management.py index 105b5bcde..82db79f11 100644 --- a/modoboa/core/management.py +++ b/modoboa/core/management.py @@ -81,7 +81,7 @@ def handle_command_line(): help='A valid command name') (args, remaining) = parser.parse_known_args() - if not commands.has_key(args.command): + if not args.command in commands: print >>sys.stderr, "Unknown command '%s'" % args.command sys.exit(1) diff --git a/modoboa/tools/pfxadmin_migrate/migrate.py b/modoboa/tools/pfxadmin_migrate/migrate.py index 8633dc2f9..b78e33d87 100755 --- a/modoboa/tools/pfxadmin_migrate/migrate.py +++ b/modoboa/tools/pfxadmin_migrate/migrate.py @@ -41,7 +41,8 @@ admin. panel. Currently, it appears that the ``crypt`` scheme is compatible with PostfixAdmin ``md5crypt`` algorithm... """ -import os, sys +import os +import sys from django.db.utils import ConnectionDoesNotExist from django.db.models import Q from django.contrib.auth.models import Group