diff --git a/modoboa/admin/models/alias.py b/modoboa/admin/models/alias.py
index c8626267c..cc5e8f4f3 100644
--- a/modoboa/admin/models/alias.py
+++ b/modoboa/admin/models/alias.py
@@ -4,7 +4,7 @@ from django.db import models
from django.utils.encoding import python_2_unicode_compatible, smart_text
from django.utils.translation import ugettext as _, ugettext_lazy
-import reversion
+from reversion import revisions as reversion
from modoboa.core import signals as core_signals
from modoboa.lib.email_utils import split_mailbox
diff --git a/modoboa/admin/models/domain.py b/modoboa/admin/models/domain.py
index bf5197adf..8134fe401 100644
--- a/modoboa/admin/models/domain.py
+++ b/modoboa/admin/models/domain.py
@@ -1,12 +1,13 @@
"""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.encoding import python_2_unicode_compatible, smart_text
from django.utils.translation import ugettext as _, ugettext_lazy
-import reversion
+from django.contrib.contenttypes.fields import GenericRelation
+
+from reversion import revisions as reversion
from modoboa.core.models import User, ObjectAccess
from modoboa.core import signals as core_signals
@@ -41,7 +42,7 @@ class Domain(AdminObject):
help_text=ugettext_lazy("Check to activate this domain"),
default=True
)
- owners = generic.GenericRelation(ObjectAccess)
+ owners = GenericRelation(ObjectAccess)
type = models.CharField(default="domain", max_length=20)
objects = DomainManager()
diff --git a/modoboa/admin/models/domain_alias.py b/modoboa/admin/models/domain_alias.py
index 1acf2ff92..92dbba536 100644
--- a/modoboa/admin/models/domain_alias.py
+++ b/modoboa/admin/models/domain_alias.py
@@ -4,9 +4,9 @@ from django.db import models
from django.utils.encoding import python_2_unicode_compatible, smart_text
from django.utils.translation import ugettext as _, ugettext_lazy
-from django.contrib.contenttypes import generic
+from django.contrib.contenttypes.fields import GenericRelation
-import reversion
+from reversion import revisions as reversion
from modoboa.core import models as core_models
from modoboa.core import signals as core_signals
@@ -46,7 +46,7 @@ class DomainAlias(AdminObject):
default=True
)
- owners = generic.GenericRelation(core_models.ObjectAccess)
+ owners = GenericRelation(core_models.ObjectAccess)
objects = DomainAliasManager()
diff --git a/modoboa/admin/models/mailbox.py b/modoboa/admin/models/mailbox.py
index c201bc7b9..4239642cb 100644
--- a/modoboa/admin/models/mailbox.py
+++ b/modoboa/admin/models/mailbox.py
@@ -10,7 +10,7 @@ from django.db.models.manager import Manager
from django.utils.encoding import python_2_unicode_compatible, smart_text
from django.utils.translation import ugettext as _, ugettext_lazy
-import reversion
+from reversion import revisions as reversion
from .base import AdminObject
from .domain import Domain
diff --git a/modoboa/admin/templates/admin/forward.html b/modoboa/admin/templates/admin/forward.html
index 3146beea6..49cc8815e 100644
--- a/modoboa/admin/templates/admin/forward.html
+++ b/modoboa/admin/templates/admin/forward.html
@@ -1,4 +1,4 @@
-{% load i18n form_tags %}{% load url from future %}
+{% load i18n form_tags %}
{% trans "Forward" %} {% trans "Automatically forward emails to another address" %}
' % alias.name
- return res
+ return mark_safe(res)
@register.simple_tag
@@ -283,4 +284,4 @@ def get_extra_admin_content(user, target, currentpage):
res = events.raiseQueryEvent(
"ExtraAdminContent", user, target, currentpage
)
- return "".join(res)
+ return mark_safe("".join(res))
diff --git a/modoboa/admin/views/alias.py b/modoboa/admin/views/alias.py
index ef771b8f1..571eada92 100644
--- a/modoboa/admin/views/alias.py
+++ b/modoboa/admin/views/alias.py
@@ -1,3 +1,4 @@
+"""Alias related views."""
from django.contrib.auth.decorators import (
login_required, permission_required
@@ -7,7 +8,7 @@ from django.db import IntegrityError
from django.shortcuts import render
from django.utils.translation import ugettext as _, ungettext
-import reversion
+from reversion import revisions as reversion
from modoboa.core import signals as core_signals
from modoboa.lib.exceptions import PermDeniedException, Conflict
diff --git a/modoboa/admin/views/domain.py b/modoboa/admin/views/domain.py
index 2e3f57289..569599118 100644
--- a/modoboa/admin/views/domain.py
+++ b/modoboa/admin/views/domain.py
@@ -1,6 +1,4 @@
-"""
-Domain related views.
-"""
+"""Domain related views."""
from django.http import HttpResponseRedirect
from django.utils.translation import ugettext as _, ungettext
@@ -11,7 +9,7 @@ from django.contrib.auth.decorators import (
login_required, permission_required, user_passes_test
)
-import reversion
+from reversion import revisions as reversion
from modoboa.core.models import User
from modoboa.core import signals as core_signals
@@ -38,8 +36,8 @@ def index(request):
@login_required
@user_passes_test(
- lambda u: u.has_perm("admin.view_domains")
- or u.has_perm("admin.view_mailboxes")
+ lambda u: u.has_perm("admin.view_domains") or
+ u.has_perm("admin.view_mailboxes")
)
def _domains(request):
sort_order, sort_dir = get_sort_order(request.GET, "name")
diff --git a/modoboa/admin/views/identity.py b/modoboa/admin/views/identity.py
index 7e58118c1..093a25dce 100644
--- a/modoboa/admin/views/identity.py
+++ b/modoboa/admin/views/identity.py
@@ -7,7 +7,7 @@ from django.shortcuts import render
from django.utils.translation import ugettext as _, ungettext
from django.views.decorators.csrf import ensure_csrf_cookie
-import reversion
+from reversion import revisions as reversion
from modoboa.core.models import User
from modoboa.lib import parameters, events
diff --git a/modoboa/admin/views/import_.py b/modoboa/admin/views/import_.py
index 6c73109cd..c66627a6f 100644
--- a/modoboa/admin/views/import_.py
+++ b/modoboa/admin/views/import_.py
@@ -10,7 +10,7 @@ from django.db import transaction
from django.shortcuts import render
from django.utils.translation import ugettext as _
-import reversion
+from reversion import revisions as reversion
from modoboa.lib import events
from modoboa.lib.exceptions import ModoboaException, Conflict
diff --git a/modoboa/admin/views/user.py b/modoboa/admin/views/user.py
index 5b8d51f70..c39859725 100644
--- a/modoboa/admin/views/user.py
+++ b/modoboa/admin/views/user.py
@@ -3,7 +3,7 @@
from django.contrib.auth.decorators import login_required
from django.utils.translation import ugettext as _
-import reversion
+from reversion import revisions as reversion
from modoboa.lib.web_utils import (
render_to_json_response, _render_to_string
diff --git a/modoboa/core/commands/postfix_maps.py b/modoboa/core/commands/postfix_maps.py
index 8a500b816..2fbfab935 100644
--- a/modoboa/core/commands/postfix_maps.py
+++ b/modoboa/core/commands/postfix_maps.py
@@ -7,6 +7,7 @@ import getpass
import os
import sys
+import django
from django.template import Context, Template
import dj_database_url
@@ -167,6 +168,7 @@ class PostfixMapsCommand(Command):
def handle(self, parsed_args):
"""Command entry point."""
+ django.setup()
dbinfo = None
if parsed_args.dburl:
dbinfo = dj_database_url.config(default=parsed_args.dburl[0])
diff --git a/modoboa/core/handlers.py b/modoboa/core/handlers.py
index e5d6fb6ce..2f77e81bd 100644
--- a/modoboa/core/handlers.py
+++ b/modoboa/core/handlers.py
@@ -6,7 +6,7 @@ from django.db.models.signals import post_delete
from django.dispatch import receiver
from django.utils.translation import ugettext as _
-import reversion
+from reversion import revisions as reversion
@receiver(reversion.post_revision_commit)
diff --git a/modoboa/core/models.py b/modoboa/core/models.py
index 1ce6c3da9..87f6cb6d7 100644
--- a/modoboa/core/models.py
+++ b/modoboa/core/models.py
@@ -6,14 +6,14 @@ from django.contrib.auth.hashers import make_password, is_password_usable
from django.contrib.auth.models import (
UserManager, Group, PermissionsMixin
)
-from django.contrib.contenttypes import generic
+from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.utils import timezone
from django.utils.encoding import python_2_unicode_compatible, smart_text
from django.utils.translation import ugettext as _, ugettext_lazy
-import reversion
+from reversion import revisions as reversion
from modoboa.core.password_hashers import get_password_hasher
from modoboa.lib import events, parameters
@@ -470,7 +470,7 @@ class ObjectAccess(models.Model):
user = models.ForeignKey(User)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
- content_object = generic.GenericForeignKey('content_type', 'object_id')
+ content_object = GenericForeignKey('content_type', 'object_id')
is_owner = models.BooleanField(default=False)
class Meta:
diff --git a/modoboa/core/templates/core/parameters.html b/modoboa/core/templates/core/parameters.html
index 7c8272790..a4b8538e4 100644
--- a/modoboa/core/templates/core/parameters.html
+++ b/modoboa/core/templates/core/parameters.html
@@ -1,4 +1,4 @@
-{% load i18n lib_tags %}{% load url from future %}
+{% load i18n lib_tags %}
{% trans "Parameters" %} {% trans "Configure Modoboa" %}