diff --git a/modoboa/admin/forms/account.py b/modoboa/admin/forms/account.py
index db0a312ce..e160b6530 100644
--- a/modoboa/admin/forms/account.py
+++ b/modoboa/admin/forms/account.py
@@ -607,8 +607,6 @@ class AccountWizard(WizardForm):
})
def done(self):
- from modoboa.lib.web_utils import render_to_json_response
-
account = self.first_step.form.save()
account.post_create(self.request.user)
mailform = self.steps[1].form
diff --git a/modoboa/core/commands/deploy.py b/modoboa/core/commands/deploy.py
index e63ca890a..84c539a8e 100644
--- a/modoboa/core/commands/deploy.py
+++ b/modoboa/core/commands/deploy.py
@@ -28,7 +28,7 @@ from modoboa.core.commands import Command
from modoboa.lib.api_client import ModoAPIClient
if sys.version_info < (3, 0, 0):
- input = raw_input
+ input = raw_input
DBCONN_TPL = """
'{{ conn_name }}': {
diff --git a/modoboa/core/handlers.py b/modoboa/core/handlers.py
index d3d78e2ce..d5983626e 100644
--- a/modoboa/core/handlers.py
+++ b/modoboa/core/handlers.py
@@ -33,8 +33,6 @@ def post_revision_commit(sender, **kwargs):
django-reversion for that.
"""
- from modoboa.lib.signals import get_request
-
current_user = get_request().user.username
logger = logging.getLogger("modoboa.admin")
for version in kwargs["versions"]:
@@ -61,8 +59,6 @@ def log_object_removal(sender, instance, **kwargs):
We want to know who was responsible for an object deletion.
"""
- from reversion.models import Version
-
if not reversion.is_registered(sender):
return
del_list = Version.objects.get_deleted(sender)
diff --git a/modoboa/core/templatetags/core_tags.py b/modoboa/core/templatetags/core_tags.py
index 20017f015..25ef503af 100644
--- a/modoboa/core/templatetags/core_tags.py
+++ b/modoboa/core/templatetags/core_tags.py
@@ -158,7 +158,7 @@ def colorize_level(level):
@register.filter
def tohtml(message):
"""Simple tag to format a text using HTML."""
- return re.sub(r"'(.*?)'", "\g<1>", message)
+ return re.sub(r"'(.*?)'", r"\g<1>", message)
@register.simple_tag
diff --git a/modoboa/lib/form_utils.py b/modoboa/lib/form_utils.py
index b9065bc30..74abb7a37 100644
--- a/modoboa/lib/form_utils.py
+++ b/modoboa/lib/form_utils.py
@@ -194,6 +194,9 @@ class DynamicForm(object):
"""
+ fields = {}
+ data = {}
+
def _create_field(self, typ, name, value=None, pos=None):
"""Create a new form field.
"""
diff --git a/modoboa/lib/permissions.py b/modoboa/lib/permissions.py
index 72a14621e..73cc4439c 100644
--- a/modoboa/lib/permissions.py
+++ b/modoboa/lib/permissions.py
@@ -51,8 +51,6 @@ def grant_access_to_object(user, obj, is_owner=False):
:param obj: an admin. object (Domain, Mailbox, ...)
:param is_owner: the user is the unique object's owner
"""
- from modoboa.core.models import User
-
ct = ContentType.objects.get_for_model(obj)
entry, created = ObjectAccess.objects.get_or_create(
user=user, content_type=ct, object_id=obj.id)
diff --git a/modoboa/lib/validators.py b/modoboa/lib/validators.py
index c440eb805..bd5e29918 100644
--- a/modoboa/lib/validators.py
+++ b/modoboa/lib/validators.py
@@ -34,6 +34,7 @@ class HostnameValidator(object):
if not self.regex.match(value):
raise ValidationError(self.message, self.code)
+
validate_hostname = HostnameValidator()
@@ -42,15 +43,16 @@ class UTF8EmailValidator(EmailValidator):
"""Validator for addresses using non-ASCII characters."""
# unicode letters range (must be a unicode string, not a raw string)
- ul = u"\u00a1-\uffff"
- ascii_set = u"-!#$%&'*+/=?^_`{}|~0-9A-Z"
+ ul = "\u00a1-\uffff"
+ ascii_set = "-!#$%&'*+/=?^_`{}|~0-9A-Z"
user_regex_raw = (
# dot-atom
- r"^[" + ascii_set + ul + "]+(\.[" + ascii_set + ul + "]+)*\Z"
+ r"^[" + ascii_set + ul + r"]+(\.[" + ascii_set + ul + r"]+)*\Z"
# quoted-string
r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"\Z)'
)
- user_regex = re.compile("(" + user_regex_raw, re.IGNORECASE)
+ user_regex = re.compile(r"(" + user_regex_raw, re.IGNORECASE)
+
validate_utf8_email = UTF8EmailValidator()
@@ -62,4 +64,5 @@ class UTF8AndEmptyUserEmailValidator(UTF8EmailValidator):
user_regex = re.compile(
r"(^$|" + UTF8EmailValidator.user_regex_raw, re.IGNORECASE)
+
validate_utf8_and_empty_user_email = UTF8AndEmptyUserEmailValidator()
diff --git a/modoboa/lib/web_utils.py b/modoboa/lib/web_utils.py
index 555a1ebf4..2596c94de 100644
--- a/modoboa/lib/web_utils.py
+++ b/modoboa/lib/web_utils.py
@@ -114,9 +114,9 @@ def size2integer(value):
:param value: the string to convert
:return: the corresponding integer value
"""
- m = re.match("(\d+)\s*(\w+)", value)
+ m = re.match(r"(\d+)\s*(\w+)", value)
if m is None:
- if re.match("\d+", value):
+ if re.match(r"\d+", value):
return int(value)
return 0
if m.group(2)[0] in ["K", "k"]:
diff --git a/modoboa/transport/urls.py b/modoboa/transport/urls.py
index 9a7319ac0..18b430451 100644
--- a/modoboa/transport/urls.py
+++ b/modoboa/transport/urls.py
@@ -8,10 +8,10 @@ from . import views
urlpatterns = [
url(r"^$", views.TransportListView.as_view(),
name="transport_list"),
- url("^create/$", views.TransportCreateView.as_view(),
+ url(r"^create/$", views.TransportCreateView.as_view(),
name="transport_create"),
- url("^update/(?P\d+)/$", views.TransportUpdateView.as_view(),
+ url(r"^update/(?P\d+)/$", views.TransportUpdateView.as_view(),
name="transport_update"),
- url("^delete/(?P\d+)/$", views.TransportDeleteView.as_view(),
+ url(r"^delete/(?P\d+)/$", views.TransportDeleteView.as_view(),
name="transport_delete"),
]