diff --git a/modoboa/core/app_settings.py b/modoboa/core/app_settings.py index f361d4a7d..9acfafae5 100644 --- a/modoboa/core/app_settings.py +++ b/modoboa/core/app_settings.py @@ -3,7 +3,6 @@ from django import forms from django.conf import settings from django.utils.translation import ugettext as _, ugettext_lazy from modoboa.lib.formutils import YesNoField, SeparatorField, InlineRadioSelect -from modoboa.lib.sysutils import exec_cmd from modoboa.lib.cryptutils import random_key from modoboa.lib import parameters @@ -202,7 +201,7 @@ class GeneralParametersForm(parameters.AdminParametersForm): required_fields = ["ldap_search_base", "ldap_search_filter"] else: required_fields = ["ldap_user_dn_template"] - + for f in required_fields: if not f in cleaned_data or cleaned_data[f] == u'': self._errors[f] = self.error_class([_("This field is required")]) @@ -214,7 +213,6 @@ class GeneralParametersForm(parameters.AdminParametersForm): Doing so, we can use the django_auth_ldap module. """ - from django.conf import settings try: import ldap from django_auth_ldap.config import LDAPSearch @@ -268,9 +266,9 @@ class UserSettings(parameters.UserParametersForm): lang = forms.ChoiceField( initial=translate_language_code(settings.LANGUAGE_CODE), label=ugettext_lazy("Prefered language"), - choices=[("cs", "čeština"), ("de", "deutsch"), + choices=[("cs", "čeština"), ("de", "deutsch"), ("en", "english"), ("es", "español"), ("fr", "français"), ("it", "italiano"), - ("pt", "português"), ("sv", "svenska"),], + ("pt", "português"), ("sv", "svenska")], help_text=ugettext_lazy("Prefered language to display pages") ) diff --git a/modoboa/core/extensions.py b/modoboa/core/extensions.py index 2b7f91772..4b399bd24 100644 --- a/modoboa/core/extensions.py +++ b/modoboa/core/extensions.py @@ -1,6 +1,3 @@ -import os -import sys -import re from django.conf import settings from django.conf.urls import include diff --git a/modoboa/core/models.py b/modoboa/core/models.py index 6d51a3aac..987b706b7 100644 --- a/modoboa/core/models.py +++ b/modoboa/core/models.py @@ -6,7 +6,6 @@ import base64 from random import Random import reversion from django.db import models -from django.db.models import Q from django.dispatch import receiver from django.utils import timezone from django.utils.translation import ugettext as _, ugettext_lazy @@ -16,7 +15,6 @@ from django.contrib.contenttypes import generic from django.contrib.auth.models import ( UserManager, Group, AbstractBaseUser, PermissionsMixin ) -from django.contrib.contenttypes.models import ContentType from modoboa.lib import events, md5crypt, parameters from modoboa.lib.exceptions import PermDeniedException from modoboa.lib.sysutils import exec_cmd @@ -172,7 +170,8 @@ class User(AbstractBaseUser, PermissionsMixin): @property def tags(self): return [{"name": "account", "label": _("account"), "type": "idt"}, - {"name": self.group, "label": self.group, "type": "grp", "color": "info"}] + {"name": self.group, "label": self.group, + "type": "grp", "color": "info"}] @property def fullname(self): @@ -313,7 +312,7 @@ class User(AbstractBaseUser, PermissionsMixin): "account", loginname, password, first name, last name, enabled, group, address[, domain, ...] - :param user: + :param user: a ``core.User`` instance :param row: a list containing the expected information :param crypt_password: """ diff --git a/modoboa/core/tables.py b/modoboa/core/tables.py index 9e1d79a53..e35868cab 100644 --- a/modoboa/core/tables.py +++ b/modoboa/core/tables.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _, ugettext_lazy +from django.utils.translation import ugettext_lazy from modoboa.lib import tables @@ -6,7 +6,9 @@ class ExtensionsTable(tables.Table): idkey = "id" selection = tables.SelectionColumn("selection", width="4%", header=False) label = tables.Column("label", label=ugettext_lazy("Name"), width="15%") - version = tables.Column("version", label=ugettext_lazy("Version"), width="6%") + version = tables.Column( + "version", label=ugettext_lazy("Version"), width="6%" + ) descr = tables.Column("description", label=ugettext_lazy("Description")) - + cols_order = ["selection", "label", "version", "descr"] diff --git a/modoboa/core/urls.py b/modoboa/core/urls.py index 152d56229..c677f73c4 100644 --- a/modoboa/core/urls.py +++ b/modoboa/core/urls.py @@ -1,4 +1,4 @@ -from django.conf.urls import patterns, url +from django.conf.urls import patterns urlpatterns = patterns( diff --git a/modoboa/core/views/user.py b/modoboa/core/views/user.py index 3a9b077d0..c42054526 100644 --- a/modoboa/core/views/user.py +++ b/modoboa/core/views/user.py @@ -1,6 +1,6 @@ from django.shortcuts import render from django.utils.translation import ugettext as _ -from django.contrib.auth.decorators import login_required, user_passes_test +from django.contrib.auth.decorators import login_required from modoboa.lib import events, parameters from modoboa.lib.webutils import ( ajax_simple_response, _render_to_string diff --git a/modoboa/demo/__init__.py b/modoboa/demo/__init__.py index 69ccfecc5..76f5c05b4 100755 --- a/modoboa/demo/__init__.py +++ b/modoboa/demo/__init__.py @@ -1,5 +1,4 @@ # coding: utf-8 -from django.conf import settings from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ from django.template.loader import render_to_string diff --git a/modoboa/extensions/admin/app_settings.py b/modoboa/extensions/admin/app_settings.py index c5fed0767..0ab9f3106 100644 --- a/modoboa/extensions/admin/app_settings.py +++ b/modoboa/extensions/admin/app_settings.py @@ -1,6 +1,6 @@ from django import forms from django.utils.translation import ugettext_lazy -from modoboa.lib.formutils import YesNoField, SeparatorField, InlineRadioSelect +from modoboa.lib.formutils import YesNoField, SeparatorField from modoboa.lib.sysutils import exec_cmd from modoboa.lib import parameters diff --git a/modoboa/extensions/admin/factories.py b/modoboa/extensions/admin/factories.py index fb41dd231..b050ff23d 100644 --- a/modoboa/extensions/admin/factories.py +++ b/modoboa/extensions/admin/factories.py @@ -1,5 +1,4 @@ import factory -from django.contrib.auth.models import Group from . import models diff --git a/modoboa/extensions/admin/forms.py b/modoboa/extensions/admin/forms.py index 7a12ffe98..74fea705c 100644 --- a/modoboa/extensions/admin/forms.py +++ b/modoboa/extensions/admin/forms.py @@ -1,6 +1,5 @@ # coding: utf-8 from django import forms -from django.contrib.auth.models import Group from django.utils.translation import ugettext as _, ugettext_lazy from django.http import QueryDict from modoboa.lib import events, parameters @@ -10,9 +9,7 @@ from modoboa.lib.permissions import get_account_roles from modoboa.lib.formutils import ( DomainNameField, YesNoField, DynamicForm, TabForms ) -from modoboa.lib.exceptions import PermDeniedException from modoboa.core.models import User -from modoboa.extensions.admin.templatetags.admin_tags import gender from modoboa.extensions.admin.exceptions import AdminError, BadDestination from modoboa.extensions.admin.models import ( Domain, DomainAlias, Mailbox, Alias, Quota @@ -547,7 +544,7 @@ class AccountFormMail(forms.Form, DynamicForm): if not user.can_access(domain): raise PermDeniedException try: - mb = Mailbox.objects.get(address=locpart, domain=domain) + Mailbox.objects.get(address=locpart, domain=domain) except Mailbox.DoesNotExist: pass else: @@ -725,7 +722,7 @@ class ForwardForm(forms.Form): if not local_part or not domname or not len(domname): raise BadDestination("Invalid mailbox syntax for %s" % d) try: - mb = Domain.objects.get(name=domname) + Domain.objects.get(name=domname) except Domain.DoesNotExist: self.dests += [d] else: diff --git a/modoboa/extensions/admin/models/domain.py b/modoboa/extensions/admin/models/domain.py index 2c5fe1ff2..c4d7d5a36 100644 --- a/modoboa/extensions/admin/models/domain.py +++ b/modoboa/extensions/admin/models/domain.py @@ -4,7 +4,7 @@ from django.db.models.manager import Manager from django.utils.translation import ugettext as _, ugettext_lazy from django.contrib.contenttypes import generic from modoboa.lib import events, parameters -from modoboa.core.models import ObjectAccess +from modoboa.core.models import User, ObjectAccess from modoboa.extensions.admin.exceptions import AdminError from .base import DatesAware diff --git a/modoboa/extensions/admin/templatetags/admin_tags.py b/modoboa/extensions/admin/templatetags/admin_tags.py index 16010ef81..9d23eee01 100644 --- a/modoboa/extensions/admin/templatetags/admin_tags.py +++ b/modoboa/extensions/admin/templatetags/admin_tags.py @@ -1,10 +1,9 @@ -import re from django import template from django.template.loader import render_to_string from django.utils.translation import ugettext as _, ugettext_lazy from django.core.urlresolvers import reverse from modoboa.lib import events -from modoboa.lib.webutils import static_url, render_actions +from modoboa.lib.webutils import render_actions from modoboa.lib.templatetags.lib_tags import render_link register = template.Library() diff --git a/modoboa/extensions/admin/tests.py b/modoboa/extensions/admin/tests.py index d32ad74f1..9d2192189 100644 --- a/modoboa/extensions/admin/tests.py +++ b/modoboa/extensions/admin/tests.py @@ -12,10 +12,11 @@ TODO: from django.core.urlresolvers import reverse from django.core.files.base import ContentFile from modoboa.core.models import User -from modoboa.core.factories import UserFactory, GroupFactory +from modoboa.core.factories import UserFactory from modoboa.lib.tests import ModoTestCase -from modoboa.extensions.admin.lib import * -from modoboa.extensions.admin.models import * +from modoboa.extensions.admin.models import ( + Domain, Mailbox, Alias, DomainAlias +) from . import factories diff --git a/modoboa/extensions/admin/views/alias.py b/modoboa/extensions/admin/views/alias.py index 7ffb9c991..b03c32fd3 100644 --- a/modoboa/extensions/admin/views/alias.py +++ b/modoboa/extensions/admin/views/alias.py @@ -3,7 +3,7 @@ from django.utils.translation import ugettext as _, ungettext from django.shortcuts import render from django.core.urlresolvers import reverse from django.contrib.auth.decorators import ( - login_required, permission_required, user_passes_test + login_required, permission_required ) from modoboa.lib import events from modoboa.lib.webutils import ajax_response, ajax_simple_response diff --git a/modoboa/extensions/admin/views/domain.py b/modoboa/extensions/admin/views/domain.py index bedeb89fb..91f2c1669 100644 --- a/modoboa/extensions/admin/views/domain.py +++ b/modoboa/extensions/admin/views/domain.py @@ -1,4 +1,4 @@ -from django.http import HttpResponse, HttpResponseRedirect +from django.http import HttpResponseRedirect from django.utils.translation import ugettext as _, ungettext from django.core.urlresolvers import reverse from django.db import transaction @@ -10,7 +10,7 @@ from django.contrib.auth.decorators import ( ) from modoboa.lib import parameters, events from modoboa.lib.webutils import ( - ajax_simple_response, ajax_response, _render_to_string + ajax_simple_response, _render_to_string ) from modoboa.lib.formutils import CreationWizard from modoboa.lib.exceptions import PermDeniedException @@ -59,7 +59,9 @@ def _domains(request): def domains(request, tplname="admin/domains.html"): if not request.user.has_perm("admin.view_domains"): if request.user.has_perm("admin.view_mailboxes"): - return HttpResponseRedirect(reverse(identities)) + return HttpResponseRedirect( + reverse('modoboa.extensions.admin.views.identity.identities') + ) return HttpResponseRedirect(reverse("modoboa.core.views.user.index")) return render(request, tplname, {"selection": "domains"}) diff --git a/modoboa/extensions/admin/views/export.py b/modoboa/extensions/admin/views/export.py index 58c2928f3..c6e9dade2 100644 --- a/modoboa/extensions/admin/views/export.py +++ b/modoboa/extensions/admin/views/export.py @@ -4,8 +4,7 @@ from rfc6266 import build_header from django.http import HttpResponse from django.shortcuts import render from django.core.urlresolvers import reverse -from django.db import transaction -from django.utils.translation import ugettext as _, ungettext +from django.utils.translation import ugettext as _ from django.contrib.auth.decorators import ( login_required, permission_required, user_passes_test ) diff --git a/modoboa/extensions/admin/views/identity.py b/modoboa/extensions/admin/views/identity.py index 4f67990be..8ba173707 100644 --- a/modoboa/extensions/admin/views/identity.py +++ b/modoboa/extensions/admin/views/identity.py @@ -8,11 +8,13 @@ from django.contrib.auth.decorators import ( from django.views.decorators.csrf import ensure_csrf_cookie from modoboa.lib import parameters, events from modoboa.lib.exceptions import PermDeniedException -from modoboa.lib.webutils import ajax_simple_response, _render_to_string +from modoboa.lib.webutils import ( + ajax_simple_response, _render_to_string, ajax_response +) from modoboa.lib.formutils import CreationWizard from modoboa.lib.templatetags.lib_tags import pagination_bar from modoboa.core.models import User -from modoboa.extensions.admin.models import Mailbox +from modoboa.extensions.admin.models import Mailbox, Domain from modoboa.extensions.admin.lib import ( get_sort_order, get_listing_page, get_identities ) diff --git a/modoboa/extensions/admin/views/import.py b/modoboa/extensions/admin/views/import.py index c1c732aa7..5384d682a 100644 --- a/modoboa/extensions/admin/views/import.py +++ b/modoboa/extensions/admin/views/import.py @@ -1,5 +1,5 @@ import csv -from django.utils.translation import ugettext as _, ungettext +from django.utils.translation import ugettext as _ from django.shortcuts import render from django.core.urlresolvers import reverse from django.db import transaction, IntegrityError diff --git a/modoboa/extensions/admin/views/user.py b/modoboa/extensions/admin/views/user.py index ad799dc17..2c4ef4b6a 100644 --- a/modoboa/extensions/admin/views/user.py +++ b/modoboa/extensions/admin/views/user.py @@ -55,7 +55,7 @@ def forward(request, tplname='admin/forward.html'): if al is not None: form.fields["dest"].initial = al.extmboxes try: - selfmb = al.mboxes.get(pk=mb.id) + al.mboxes.get(pk=mb.id) except Mailbox.DoesNotExist: pass else: diff --git a/modoboa/extensions/amavis/__init__.py b/modoboa/extensions/amavis/__init__.py index 9a8bc1b15..9abc912ed 100644 --- a/modoboa/extensions/amavis/__init__.py +++ b/modoboa/extensions/amavis/__init__.py @@ -33,7 +33,7 @@ class Amavis(ModoExtension): for dom in Domain.objects.all(): try: - u = Users.objects.get(email="@%s" % dom.name) + Users.objects.get(email="@%s" % dom.name) except Users.DoesNotExist: p = Policy.objects.create(policy_name=dom.name) Users.objects.create(email="@%s" % dom.name, fullname=dom.name, diff --git a/modoboa/extensions/amavis/forms.py b/modoboa/extensions/amavis/forms.py index f655418e3..721b3c5a1 100644 --- a/modoboa/extensions/amavis/forms.py +++ b/modoboa/extensions/amavis/forms.py @@ -1,5 +1,4 @@ # coding: utf-8 -from django.utils.translation import ugettext_lazy as _ from django import forms from models import Policy, Users from modoboa.lib.formutils import InlineRadioSelect @@ -20,7 +19,7 @@ class DomainPolicyForm(forms.ModelForm): 'spam_kill_level': forms.TextInput(attrs={'class': 'span1'}), 'spam_subject_tag2': forms.TextInput(attrs={'class': 'span2'}), 'bypass_banned_checks': InlineRadioSelect(), - } + } def __init__(self, *args, **kwargs): if "instance" in kwargs: @@ -28,7 +27,7 @@ class DomainPolicyForm(forms.ModelForm): try: policy = Users.objects.get(email="@%s" % self.domain.name).policy kwargs["instance"] = policy - except (Users.DoesNotExist, Policy.DoesNotExist), e: + except (Users.DoesNotExist, Policy.DoesNotExist): del kwargs["instance"] super(DomainPolicyForm, self).__init__(*args, **kwargs) for f in self.fields.keys(): diff --git a/modoboa/extensions/amavis/lib.py b/modoboa/extensions/amavis/lib.py index 607e93514..2a98f4ccf 100644 --- a/modoboa/extensions/amavis/lib.py +++ b/modoboa/extensions/amavis/lib.py @@ -6,10 +6,8 @@ import string from functools import wraps from django.core.urlresolvers import reverse from django.utils.translation import ugettext as _ -from django.db.models import Q from modoboa.lib import parameters from modoboa.lib.exceptions import ModoboaException -from .models import Msgrcpt def selfservice(ssfunc=None): @@ -30,7 +28,9 @@ def selfservice(ssfunc=None): return f(request, *args, **kwargs) if parameters.get_admin("SELF_SERVICE") == "no": from django.contrib.auth.views import redirect_to_login - return redirect_to_login(reverse("modoboa.extensions.amavis.views.index")) + return redirect_to_login( + reverse("modoboa.extensions.amavis.views.index") + ) return ssfunc(request, *args, **kwargs) return wrapped_f return decorator @@ -50,7 +50,9 @@ class AMrelease(object): self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) self.sock.connect(path) except socket.error, err: - raise ModoboaException(_("Connection to amavis failed: %s" % str(err))) + raise ModoboaException( + _("Connection to amavis failed: %s" % str(err)) + ) def decode(self, answer): def repl(match): diff --git a/modoboa/extensions/amavis/management/commands/amnotify.py b/modoboa/extensions/amavis/management/commands/amnotify.py index b90046869..1ede77c6e 100644 --- a/modoboa/extensions/amavis/management/commands/amnotify.py +++ b/modoboa/extensions/amavis/management/commands/amnotify.py @@ -1,8 +1,5 @@ #!/usr/bin/env python # coding: utf-8 - -import sys -import os from optparse import make_option from django.core.management.base import BaseCommand, CommandError from django.template.loader import render_to_string diff --git a/modoboa/extensions/amavis/models.py b/modoboa/extensions/amavis/models.py index bda2a14ef..b15a63c93 100644 --- a/modoboa/extensions/amavis/models.py +++ b/modoboa/extensions/amavis/models.py @@ -10,7 +10,7 @@ # Original Amavis version : 2.6.2 from django.db import models -from django.utils.translation import ugettext as _, ugettext_lazy +from django.utils.translation import ugettext_lazy class Maddr(models.Model): diff --git a/modoboa/extensions/amavis/sql_listing.py b/modoboa/extensions/amavis/sql_listing.py index fb357d9be..4a40ad332 100644 --- a/modoboa/extensions/amavis/sql_listing.py +++ b/modoboa/extensions/amavis/sql_listing.py @@ -1,15 +1,16 @@ # coding: utf-8 - +import re from datetime import datetime -from django.utils.translation import ugettext as _, ugettext_lazy +from django.template.loader import render_to_string +from django.utils.translation import ugettext_lazy from django.db.models import Q from modoboa.lib import tables from modoboa.lib.webutils import static_url from modoboa.lib.email_listing import MBconnector, EmailListing -from modoboa.lib.emailutils import * +from modoboa.lib.emailutils import Email from modoboa.lib.dbutils import db_type from modoboa.extensions.admin.models import Domain -from models import * +from .models import Quarantine, Msgrcpt class Qtable(tables.Table): diff --git a/modoboa/extensions/amavis/templatetags/amavis_tags.py b/modoboa/extensions/amavis/templatetags/amavis_tags.py index f4989034f..ab75ef7f1 100644 --- a/modoboa/extensions/amavis/templatetags/amavis_tags.py +++ b/modoboa/extensions/amavis/templatetags/amavis_tags.py @@ -1,112 +1,113 @@ from django import template from django.template.loader import render_to_string -from django.template import Template, Context from django.utils.translation import ugettext as _ from django.core.urlresolvers import reverse from django.conf import settings -from modoboa.lib.webutils import static_url -from modoboa.extensions import amavis register = template.Library() + @register.simple_tag def viewm_menu(user, mail_id, rcpt): entries = [ - {"name" : "release", - "img" : "icon-white icon-ok", - "class" : "btn-success", - "url" : reverse(amavis.views.release, args=[mail_id]) - + ("?rcpt=%s" % rcpt if rcpt else ""), - "label" : _("Release")}, - {"name" : "delete", - "class" : "btn-danger", - "img" : "icon-white icon-trash", - "url" : reverse(amavis.views.delete, args=[mail_id]) \ - + ("?rcpt=%s" % rcpt if rcpt else ""), - "label" : _("Delete")}, - {"name" : "headers", - "url" : reverse(amavis.views.viewheaders, args=[mail_id]), - "label" : _("View full headers")}, - ] + {"name": "release", + "img": "icon-white icon-ok", + "class": "btn-success", + "url": reverse('modoboa.extensions.amavis.views.release', args=[mail_id]) + + ("?rcpt=%s" % rcpt if rcpt else ""), + "label": _("Release")}, + {"name": "delete", + "class": "btn-danger", + "img": "icon-white icon-trash", + "url": reverse('modoboa.extensions.amavis.views.delete', args=[mail_id]) + + ("?rcpt=%s" % rcpt if rcpt else ""), + "label": _("Delete")}, + {"name": "headers", + "url": reverse('modoboa.extensions.amavis.views.viewheaders', args=[mail_id]), + "label": _("View full headers")}, + ] - menu = render_to_string('common/buttons_list.html', - {"entries" : entries, "extraclasses" : "pull-left"}) - - entries = [{"name" : "close", - "url" : "javascript:history.go(-1);", - "img" : "icon-remove"}] - menu += render_to_string('common/buttons_list.html', - {"entries" : entries, "extraclasses" : "pull-right"}) + menu = render_to_string('common/buttons_list.html', + {"entries": entries, "extraclasses": "pull-left"}) + + entries = [{"name": "close", + "url": "javascript:history.go(-1);", + "img": "icon-remove"}] + menu += render_to_string( + 'common/buttons_list.html', + {"entries": entries, "extraclasses": "pull-right"} + ) return menu + @register.simple_tag def viewm_menu_simple(user, mail_id, rcpt, secret_id=""): entries = [ - {"name" : "release", - "img" : "icon-white icon-ok", - "class" : "btn-success", - "url" : reverse(amavis.views.release, args=[mail_id]) \ + {"name": "release", + "img": "icon-white icon-ok", + "class": "btn-success", + "url": reverse('modoboa.extensions.amavis.views.release', args=[mail_id]) \ + ("?rcpt=%s" % rcpt \ + (("&secret_id=%s" % secret_id) if secret_id != "" else "")), - "label" : _("Release")}, - {"name" : "delete", - "img" : "icon-white icon-trash", - "class" : "btn-danger", - "url" : reverse(amavis.views.delete, args=[mail_id]) \ + "label": _("Release")}, + {"name": "delete", + "img": "icon-white icon-trash", + "class": "btn-danger", + "url": reverse('modoboa.extensions.amavis.views.delete', args=[mail_id]) \ + "?rcpt=%s" % rcpt \ + ("&secret_id=%s" % secret_id if secret_id != "" else ""), - "label" : _("Delete")}, - ] + "label": _("Delete")}, + ] + + return render_to_string('common/buttons_list.html', + {"entries": entries}) - return render_to_string('common/buttons_list.html', - {"entries" : entries}) @register.simple_tag def quar_menu(user): entries = [ - {"name" : "release-multi", - "url" : reverse(amavis.views.process), - "img" : "icon-white icon-ok", - "class" : "btn-success", - "label" : _("Release")}, - {"name" : "delete-multi", - "img" : "icon-white icon-trash", - "class" : "btn-danger", - "url" : reverse(amavis.views.process), - "label" : _("Delete")}, - {"name" : "select", - "url" : "", - "label" : _("Content Class"), - "menu" : [ - {"name" : "selectmsgs", - "url" : "", - "label" : _("Nothing")}, - {"name" : "selectmsgs", - "url" : "S", - "label" : _("Spam")}, - {"name" : "selectmsgs", - "url" : "V", - "label" : _("Virus")}, - {"name" : "selectmsgs", - "url" : "H", - "label" : _("Bad header")}, - {"name" : "selectmsgs", - "url" : "M", - "label" : _("Bad MIME")} - ] - } - ] + {"name": "release-multi", + "url": reverse('modoboa.extensions.amavis.views.process'), + "img": "icon-white icon-ok", + "class": "btn-success", + "label": _("Release")}, + {"name": "delete-multi", + "img": "icon-white icon-trash", + "class": "btn-danger", + "url": reverse('modoboa.extensions.amavis.views.process'), + "label": _("Delete")}, + {"name": "select", + "url": "", + "label": _("Content Class"), + "menu": [ + {"name": "selectmsgs", + "url": "", + "label": _("Nothing")}, + {"name": "selectmsgs", + "url": "S", + "label": _("Spam")}, + {"name": "selectmsgs", + "url": "V", + "label": _("Virus")}, + {"name": "selectmsgs", + "url": "H", + "label": _("Bad header")}, + {"name": "selectmsgs", + "url": "M", + "label": _("Bad MIME")} + ]} + ] if user.group != 'SimpleUsers': - extraopts = [{"name" : "to", "label" : _("To")}] + extraopts = [{"name": "to", "label": _("To")}] else: extraopts = [] extracontent = render_to_string('common/email_searchbar.html', { - "STATIC_URL" : settings.STATIC_URL, - "extraopts" : extraopts - }) + "STATIC_URL": settings.STATIC_URL, + "extraopts": extraopts + }) return render_to_string('common/buttons_list.html', dict( - entries=entries, extracontent=extracontent - )) + entries=entries, extracontent=extracontent + )) diff --git a/modoboa/extensions/amavis/views.py b/modoboa/extensions/amavis/views.py index b0e2ecf01..261110f2c 100644 --- a/modoboa/extensions/amavis/views.py +++ b/modoboa/extensions/amavis/views.py @@ -19,6 +19,7 @@ from modoboa.extensions.admin.models import Mailbox, Domain from templatetags.amavis_tags import quar_menu, viewm_menu from .lib import selfservice, AMrelease from .sql_listing import SQLlisting, SQLemail, get_wrapper +from .models import Msgrcpt def __back_to_listing(request): diff --git a/modoboa/extensions/limits/__init__.py b/modoboa/extensions/limits/__init__.py index 0bbf995fb..2a22f37e8 100644 --- a/modoboa/extensions/limits/__init__.py +++ b/modoboa/extensions/limits/__init__.py @@ -8,12 +8,10 @@ from django.contrib.auth.models import Permission, Group from django.db import IntegrityError from django.contrib.contenttypes.models import ContentType from django.utils.translation import ugettext as _, ugettext_lazy -from django.core.urlresolvers import reverse from modoboa.lib import events, parameters from modoboa.core.extensions import ModoExtension, exts_pool from .forms import ResourcePoolForm import controls -import views class Limits(ModoExtension): diff --git a/modoboa/extensions/limits/lib.py b/modoboa/extensions/limits/lib.py index 4fd916cf8..5a395b86c 100644 --- a/modoboa/extensions/limits/lib.py +++ b/modoboa/extensions/limits/lib.py @@ -4,7 +4,6 @@ ------------------------------- """ -from django.contrib.auth.models import Group from django.utils.translation import ugettext as _ from modoboa.lib.exceptions import ModoboaException diff --git a/modoboa/extensions/limits/models.py b/modoboa/extensions/limits/models.py index 14b27ef74..80f521289 100644 --- a/modoboa/extensions/limits/models.py +++ b/modoboa/extensions/limits/models.py @@ -1,10 +1,7 @@ # coding: utf-8 - from django.db import models -from django.contrib.contenttypes import generic from django.utils.translation import ugettext as _, ugettext_lazy from modoboa.lib import parameters -from modoboa.core.models import User from django.conf import settings limits_tpl = [ diff --git a/modoboa/extensions/postfix_autoreply/__init__.py b/modoboa/extensions/postfix_autoreply/__init__.py index 61608c4fc..7f09472f6 100644 --- a/modoboa/extensions/postfix_autoreply/__init__.py +++ b/modoboa/extensions/postfix_autoreply/__init__.py @@ -6,8 +6,7 @@ This module provides a way to integrate Modoboa auto-reply functionality into Postfix. """ -from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _, ugettext_lazy +from django.utils.translation import ugettext_lazy from modoboa.lib import events, parameters from modoboa.core.extensions import ModoExtension, exts_pool from .models import Transport, Alias @@ -24,7 +23,7 @@ class PostfixAutoreply(ModoExtension): for dom in Domain.objects.all(): try: - trans = Transport.objects.get(domain="autoreply.%s" % dom.name) + Transport.objects.get(domain="autoreply.%s" % dom.name) except Transport.DoesNotExist: onCreateDomain(None, dom) else: @@ -32,7 +31,7 @@ class PostfixAutoreply(ModoExtension): for mb in dom.mailbox_set.all(): try: - alias = Alias.objects.get(full_address=mb.full_address) + Alias.objects.get(full_address=mb.full_address) except Alias.DoesNotExist: onCreateMailbox(None, mb) diff --git a/modoboa/extensions/postfix_autoreply/models.py b/modoboa/extensions/postfix_autoreply/models.py index db41740e5..194411c76 100644 --- a/modoboa/extensions/postfix_autoreply/models.py +++ b/modoboa/extensions/postfix_autoreply/models.py @@ -1,7 +1,6 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ -from modoboa.extensions.admin.models import Domain, Mailbox - +from modoboa.extensions.admin.models import Mailbox class Transport(models.Model): diff --git a/modoboa/extensions/sievefilters/templatetags/sfilters_tags.py b/modoboa/extensions/sievefilters/templatetags/sfilters_tags.py index 0f5667a47..fe996658c 100644 --- a/modoboa/extensions/sievefilters/templatetags/sfilters_tags.py +++ b/modoboa/extensions/sievefilters/templatetags/sfilters_tags.py @@ -2,7 +2,7 @@ from django import template from django.template.loader import render_to_string from django.utils.translation import ugettext as _ from django.core.urlresolvers import reverse -from modoboa.lib.webutils import render_actions, static_url +from modoboa.lib.webutils import render_actions register = template.Library() diff --git a/modoboa/extensions/sievefilters/views.py b/modoboa/extensions/sievefilters/views.py index 291f1c0d6..31fce1b29 100644 --- a/modoboa/extensions/sievefilters/views.py +++ b/modoboa/extensions/sievefilters/views.py @@ -8,10 +8,9 @@ from django.contrib.auth.decorators import login_required from django.utils.translation import ugettext as _ from django.core.urlresolvers import reverse from modoboa.lib import parameters -from modoboa.lib.webutils import _render_to_string, _render_error, \ +from modoboa.lib.webutils import _render_error, \ ajax_response, ajax_simple_response from modoboa.lib.connections import ConnectionError -from modoboa.lib.cryptutils import get_password from modoboa.extensions.admin.lib import needs_mailbox from .lib import SieveClient, SieveClientError from .forms import ( diff --git a/modoboa/extensions/stats/grapher.py b/modoboa/extensions/stats/grapher.py index e19f42bf6..289ae93d2 100644 --- a/modoboa/extensions/stats/grapher.py +++ b/modoboa/extensions/stats/grapher.py @@ -1,9 +1,7 @@ # coding: utf-8 - import sys import os import time -import datetime from django.utils.translation import ugettext as _, ugettext_lazy from modoboa.lib import parameters diff --git a/modoboa/extensions/stats/management/commands/logparser.py b/modoboa/extensions/stats/management/commands/logparser.py index b6df503c3..0f75eb3f8 100644 --- a/modoboa/extensions/stats/management/commands/logparser.py +++ b/modoboa/extensions/stats/management/commands/logparser.py @@ -23,7 +23,7 @@ import os import re import rrdtool import string -from django.core.management.base import BaseCommand, CommandError +from django.core.management.base import BaseCommand from optparse import make_option from modoboa.lib import parameters from modoboa.extensions.admin.models import Domain diff --git a/modoboa/extensions/stats/urls.py b/modoboa/extensions/stats/urls.py index a85687dea..971df5904 100644 --- a/modoboa/extensions/stats/urls.py +++ b/modoboa/extensions/stats/urls.py @@ -1,8 +1,8 @@ -from django.conf.urls import patterns, include, url - -urlpatterns = patterns('modoboa.extensions.stats.views', - url(r'^$', 'index', name='fullindex'), - url(r'^graphs/$', "graphs"), - ) +from django.conf.urls import patterns, url +urlpatterns = patterns( + 'modoboa.extensions.stats.views', + url(r'^$', 'index', name='fullindex'), + url(r'^graphs/$', "graphs"), +) diff --git a/modoboa/extensions/stats/views.py b/modoboa/extensions/stats/views.py index a6b95c8e7..b9fee9083 100644 --- a/modoboa/extensions/stats/views.py +++ b/modoboa/extensions/stats/views.py @@ -1,6 +1,6 @@ # coding: utf-8 from django.shortcuts import render -from django.utils.translation import ugettext as _, ugettext_lazy +from django.utils.translation import ugettext as _ from django.contrib.auth.decorators import ( login_required, user_passes_test, permission_required ) @@ -10,7 +10,7 @@ from modoboa.lib.webutils import ( _render_to_string, ajax_simple_response ) from modoboa.extensions.admin.models import ( - Domain, Mailbox + Domain ) from modoboa.extensions.stats.grapher import periods, str2Time, Grapher diff --git a/modoboa/extensions/webmail/imaputils.py b/modoboa/extensions/webmail/imaputils.py index a5db75fab..80d2a324e 100644 --- a/modoboa/extensions/webmail/imaputils.py +++ b/modoboa/extensions/webmail/imaputils.py @@ -11,7 +11,6 @@ import time from functools import wraps from django.utils.translation import ugettext as _ from modoboa.lib import parameters -from modoboa.lib import imap_utf7 from modoboa.lib.connections import ConnectionsManager from modoboa.lib.webutils import static_url from exceptions import ImapError, WebmailError diff --git a/modoboa/extensions/webmail/lib.py b/modoboa/extensions/webmail/lib.py index bd59b19dd..427a917d1 100644 --- a/modoboa/extensions/webmail/lib.py +++ b/modoboa/extensions/webmail/lib.py @@ -1,7 +1,6 @@ # coding: utf-8 import os import re -import time from datetime import datetime, timedelta import email import lxml diff --git a/modoboa/extensions/webmail/views.py b/modoboa/extensions/webmail/views.py index 488135646..4c7c29257 100644 --- a/modoboa/extensions/webmail/views.py +++ b/modoboa/extensions/webmail/views.py @@ -22,7 +22,7 @@ from .lib import ( decode_payload, AttachmentUploadHandler, save_attachment, ImapListing, EmailSignature, clean_attachments, set_compose_session, send_mail, - ImapEmail, ReplyModifier, ForwardModifier + ImapEmail ) from templatetags import webmail_tags diff --git a/modoboa/lib/email_listing.py b/modoboa/lib/email_listing.py index 8cd0115b4..de2a73da7 100644 --- a/modoboa/lib/email_listing.py +++ b/modoboa/lib/email_listing.py @@ -1,17 +1,9 @@ # -*- coding: utf-8 -*- -import time import re -import os -import time -import random -import hashlib -import lxml.html -from lxml import etree from django.conf import settings from django.template.loader import render_to_string from django.template import Template, Context from django.utils.translation import ugettext as _ -from modoboa.lib.emailutils import decode attached_map = {} diff --git a/modoboa/lib/emailutils.py b/modoboa/lib/emailutils.py index 7a6795d8b..dd8da9f35 100644 --- a/modoboa/lib/emailutils.py +++ b/modoboa/lib/emailutils.py @@ -6,7 +6,6 @@ import smtplib from email.header import Header, decode_header from email.mime.text import MIMEText from email.utils import make_msgid, formatdate, parseaddr -from django.template import Template, Context from django.template.loader import render_to_string from django.conf import settings import u2u_decode diff --git a/modoboa/lib/ldaputils.py b/modoboa/lib/ldaputils.py index 6bb909527..28e5e178a 100644 --- a/modoboa/lib/ldaputils.py +++ b/modoboa/lib/ldaputils.py @@ -33,9 +33,7 @@ Extracted from `this blog one instance to another. """ -import sys import ldap -import re import base64 import hashlib import string diff --git a/modoboa/lib/parameters.py b/modoboa/lib/parameters.py index c6989f513..97a3ab270 100644 --- a/modoboa/lib/parameters.py +++ b/modoboa/lib/parameters.py @@ -8,10 +8,8 @@ will be available and modifiable directly from the web interface. Only super users will be able to access this part of the web interface. """ - import inspect import re -import copy from django import forms from exceptions import ModoboaException diff --git a/modoboa/lib/permissions.py b/modoboa/lib/permissions.py index 90c0eea9a..ce5dcb9d7 100644 --- a/modoboa/lib/permissions.py +++ b/modoboa/lib/permissions.py @@ -1,5 +1,4 @@ # coding: utf-8 -from functools import wraps from django.contrib.contenttypes.models import ContentType from django.utils.translation import ugettext as _ from django.db import IntegrityError diff --git a/modoboa/lib/sysutils.py b/modoboa/lib/sysutils.py index 8ce692064..237f9ea64 100644 --- a/modoboa/lib/sysutils.py +++ b/modoboa/lib/sysutils.py @@ -5,7 +5,6 @@ This module extra functions/shortcuts to communicate with the system (executing commands, etc.) """ import subprocess -from modoboa.lib import parameters def exec_cmd(cmd, sudo_user=None, **kwargs): diff --git a/modoboa/lib/tables.py b/modoboa/lib/tables.py index ada681a11..4851caeca 100644 --- a/modoboa/lib/tables.py +++ b/modoboa/lib/tables.py @@ -9,11 +9,9 @@ output (using standard tags like