diff --git a/bin/modoboa-admin.py b/bin/modoboa-admin.py index 9309b6cc8..a637e52c6 100644 --- a/bin/modoboa-admin.py +++ b/bin/modoboa-admin.py @@ -1,6 +1,8 @@ #!/usr/bin/env python # coding: utf-8 +from __future__ import unicode_literals + from modoboa.core.commands import handle_command_line if __name__ == "__main__": diff --git a/modoboa/__init__.py b/modoboa/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/__init__.py +++ b/modoboa/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/admin/__init__.py b/modoboa/admin/__init__.py index 4002eb9dd..5882e6d25 100644 --- a/modoboa/admin/__init__.py +++ b/modoboa/admin/__init__.py @@ -1 +1,3 @@ +from __future__ import unicode_literals + default_app_config = "modoboa.admin.apps.AdminConfig" diff --git a/modoboa/admin/api.py b/modoboa/admin/api.py index 27432a663..b4a5c491d 100644 --- a/modoboa/admin/api.py +++ b/modoboa/admin/api.py @@ -1,5 +1,7 @@ """Admin API.""" +from __future__ import unicode_literals + from django import http from django.contrib.contenttypes.models import ContentType diff --git a/modoboa/admin/app_settings.py b/modoboa/admin/app_settings.py index 433a21618..611601d66 100644 --- a/modoboa/admin/app_settings.py +++ b/modoboa/admin/app_settings.py @@ -1,5 +1,7 @@ """Modoboa admin settings.""" +from __future__ import unicode_literals + import os from django import forms diff --git a/modoboa/admin/apps.py b/modoboa/admin/apps.py index 281d2d5ba..f799fa177 100644 --- a/modoboa/admin/apps.py +++ b/modoboa/admin/apps.py @@ -1,5 +1,7 @@ """AppConfig for admin.""" +from __future__ import unicode_literals + from django.apps import AppConfig from .app_settings import load_admin_settings diff --git a/modoboa/admin/constants.py b/modoboa/admin/constants.py index 944da5e2f..7a78b2cc0 100644 --- a/modoboa/admin/constants.py +++ b/modoboa/admin/constants.py @@ -1,5 +1,7 @@ """Admin constants.""" +from __future__ import unicode_literals + DNSBL_PROVIDERS = [ "aspews.ext.sorbs.net", "b.barracudacentral.org", diff --git a/modoboa/admin/factories.py b/modoboa/admin/factories.py index ad7eb13a3..2aa5112c9 100644 --- a/modoboa/admin/factories.py +++ b/modoboa/admin/factories.py @@ -1,6 +1,9 @@ """ Fixtures factories. """ + +from __future__ import unicode_literals + import factory from modoboa.core.factories import PermissionFactory, UserFactory diff --git a/modoboa/admin/forms/__init__.py b/modoboa/admin/forms/__init__.py index dbb5a36ef..b7811a0d9 100644 --- a/modoboa/admin/forms/__init__.py +++ b/modoboa/admin/forms/__init__.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + from .domain import ( DomainFormGeneral, DomainFormOptions, DomainForm, DomainWizard ) diff --git a/modoboa/admin/forms/account.py b/modoboa/admin/forms/account.py index 1fa51628f..53e2ff5fe 100644 --- a/modoboa/admin/forms/account.py +++ b/modoboa/admin/forms/account.py @@ -1,5 +1,7 @@ """Forms related to accounts management.""" +from __future__ import unicode_literals + from collections import OrderedDict from functools import reduce diff --git a/modoboa/admin/forms/alias.py b/modoboa/admin/forms/alias.py index 6c7641145..12b306442 100644 --- a/modoboa/admin/forms/alias.py +++ b/modoboa/admin/forms/alias.py @@ -1,5 +1,7 @@ """Forms related to aliases management.""" +from __future__ import unicode_literals + from collections import OrderedDict from django import forms diff --git a/modoboa/admin/forms/domain.py b/modoboa/admin/forms/domain.py index 3dab2282a..a51a912b3 100644 --- a/modoboa/admin/forms/domain.py +++ b/modoboa/admin/forms/domain.py @@ -1,5 +1,7 @@ """Forms related to domains management.""" +from __future__ import unicode_literals + from functools import reduce from django import forms diff --git a/modoboa/admin/forms/export.py b/modoboa/admin/forms/export.py index f1f8a868b..049b451cb 100644 --- a/modoboa/admin/forms/export.py +++ b/modoboa/admin/forms/export.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + from django import forms from django.utils.translation import ugettext_lazy diff --git a/modoboa/admin/forms/forward.py b/modoboa/admin/forms/forward.py index 5cd7b1b7c..ddccba0f4 100644 --- a/modoboa/admin/forms/forward.py +++ b/modoboa/admin/forms/forward.py @@ -1,5 +1,7 @@ """Forms related to forwards management.""" +from __future__ import unicode_literals + from django import forms from django.core import validators from django.utils.translation import ugettext_lazy diff --git a/modoboa/admin/forms/import_.py b/modoboa/admin/forms/import_.py index 0091e4ba8..19fc7d360 100644 --- a/modoboa/admin/forms/import_.py +++ b/modoboa/admin/forms/import_.py @@ -1,5 +1,7 @@ """Forms related to import operations.""" +from __future__ import unicode_literals + from django import forms from django.utils.translation import ugettext_lazy diff --git a/modoboa/admin/handlers.py b/modoboa/admin/handlers.py index afdb82ee8..ff9d7c954 100644 --- a/modoboa/admin/handlers.py +++ b/modoboa/admin/handlers.py @@ -1,5 +1,7 @@ """Django signal handlers for admin.""" +from __future__ import unicode_literals + from django.core.urlresolvers import reverse from django.db.models import signals from django.dispatch import receiver diff --git a/modoboa/admin/lib.py b/modoboa/admin/lib.py index 368757300..4ad7a9d67 100644 --- a/modoboa/admin/lib.py +++ b/modoboa/admin/lib.py @@ -2,6 +2,8 @@ """Internal library for admin.""" +from __future__ import unicode_literals + from functools import wraps from itertools import chain diff --git a/modoboa/admin/management/__init__.py b/modoboa/admin/management/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/admin/management/__init__.py +++ b/modoboa/admin/management/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/admin/management/commands/__init__.py b/modoboa/admin/management/commands/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/admin/management/commands/__init__.py +++ b/modoboa/admin/management/commands/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/admin/management/commands/handle_mailbox_operations.py b/modoboa/admin/management/commands/handle_mailbox_operations.py index 1632a1a3a..8888cb9eb 100644 --- a/modoboa/admin/management/commands/handle_mailbox_operations.py +++ b/modoboa/admin/management/commands/handle_mailbox_operations.py @@ -1,6 +1,6 @@ """A management command to apply mailbox operations.""" -from __future__ import print_function +from __future__ import unicode_literals, print_function import logging import os diff --git a/modoboa/admin/management/commands/modo.py b/modoboa/admin/management/commands/modo.py index 4205f2e28..5088ace23 100644 --- a/modoboa/admin/management/commands/modo.py +++ b/modoboa/admin/management/commands/modo.py @@ -1,5 +1,7 @@ """Modoboa main management command.""" +from __future__ import unicode_literals + from subcommand.base import SubcommandCommand from .subcommands._mx import CheckMXRecords diff --git a/modoboa/admin/management/commands/subcommands/__init__.py b/modoboa/admin/management/commands/subcommands/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/admin/management/commands/subcommands/__init__.py +++ b/modoboa/admin/management/commands/subcommands/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/admin/management/commands/subcommands/_export.py b/modoboa/admin/management/commands/subcommands/_export.py index 4786e3462..6a5f0c121 100644 --- a/modoboa/admin/management/commands/subcommands/_export.py +++ b/modoboa/admin/management/commands/subcommands/_export.py @@ -1,5 +1,7 @@ """Django management command to export admin objects.""" +from __future__ import unicode_literals + import csv import sys diff --git a/modoboa/admin/management/commands/subcommands/_import.py b/modoboa/admin/management/commands/subcommands/_import.py index b5fb3c49c..8e199eabf 100644 --- a/modoboa/admin/management/commands/subcommands/_import.py +++ b/modoboa/admin/management/commands/subcommands/_import.py @@ -1,5 +1,7 @@ """Django management command to import admin objects.""" +from __future__ import unicode_literals + import csv import os diff --git a/modoboa/admin/management/commands/subcommands/_mx.py b/modoboa/admin/management/commands/subcommands/_mx.py index 4ee1e5ba9..740f514d4 100644 --- a/modoboa/admin/management/commands/subcommands/_mx.py +++ b/modoboa/admin/management/commands/subcommands/_mx.py @@ -1,6 +1,6 @@ """Management command to check defined domains.""" -from __future__ import print_function +from __future__ import print_function, unicode_literals from datetime import timedelta import ipaddress diff --git a/modoboa/admin/management/commands/subcommands/_repair.py b/modoboa/admin/management/commands/subcommands/_repair.py index 27cc9705d..b7198bbd6 100644 --- a/modoboa/admin/management/commands/subcommands/_repair.py +++ b/modoboa/admin/management/commands/subcommands/_repair.py @@ -1,6 +1,6 @@ """Management command to check and fix known problems.""" -from __future__ import print_function +from __future__ import print_function, unicode_literals from django.conf import settings from django.core.management.base import BaseCommand diff --git a/modoboa/admin/migrations/__init__.py b/modoboa/admin/migrations/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/admin/migrations/__init__.py +++ b/modoboa/admin/migrations/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/admin/models/__init__.py b/modoboa/admin/models/__init__.py index 07a1569ea..35e093302 100644 --- a/modoboa/admin/models/__init__.py +++ b/modoboa/admin/models/__init__.py @@ -1,5 +1,7 @@ """Admin models.""" +from __future__ import unicode_literals + from .base import AdminObject from .domain import Domain, MXRecord, DNSBLResult from .domain_alias import DomainAlias diff --git a/modoboa/admin/models/alias.py b/modoboa/admin/models/alias.py index 0c3223d18..81274b538 100644 --- a/modoboa/admin/models/alias.py +++ b/modoboa/admin/models/alias.py @@ -1,5 +1,7 @@ """Models related to aliases management.""" +from __future__ import unicode_literals + import hashlib import random diff --git a/modoboa/admin/models/base.py b/modoboa/admin/models/base.py index b58ab912a..f3fb46848 100644 --- a/modoboa/admin/models/base.py +++ b/modoboa/admin/models/base.py @@ -1,5 +1,7 @@ """Base admin models.""" +from __future__ import unicode_literals + from django.db import models from django.utils import timezone diff --git a/modoboa/admin/models/domain.py b/modoboa/admin/models/domain.py index c894b9e01..a521418b7 100644 --- a/modoboa/admin/models/domain.py +++ b/modoboa/admin/models/domain.py @@ -1,5 +1,7 @@ """Models related to domains management.""" +from __future__ import unicode_literals + import datetime from functools import reduce diff --git a/modoboa/admin/models/domain_alias.py b/modoboa/admin/models/domain_alias.py index 516be06fc..c9047886d 100644 --- a/modoboa/admin/models/domain_alias.py +++ b/modoboa/admin/models/domain_alias.py @@ -1,5 +1,7 @@ """Models related to domain aliases management.""" +from __future__ import unicode_literals + 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 diff --git a/modoboa/admin/models/mailbox.py b/modoboa/admin/models/mailbox.py index b527ab0d0..bd50a3363 100644 --- a/modoboa/admin/models/mailbox.py +++ b/modoboa/admin/models/mailbox.py @@ -1,5 +1,7 @@ """Models related to mailboxes management.""" +from __future__ import unicode_literals + import os import pwd diff --git a/modoboa/admin/postfix_maps.py b/modoboa/admin/postfix_maps.py index a6e5a4c4a..1af7112fa 100644 --- a/modoboa/admin/postfix_maps.py +++ b/modoboa/admin/postfix_maps.py @@ -1,5 +1,7 @@ """Map file definitions for postfix.""" +from __future__ import unicode_literals + class DomainsMap(object): diff --git a/modoboa/admin/serializers.py b/modoboa/admin/serializers.py index 5a0608874..3827ec139 100644 --- a/modoboa/admin/serializers.py +++ b/modoboa/admin/serializers.py @@ -1,5 +1,7 @@ """Admin serializers.""" +from __future__ import unicode_literals + from django.core.exceptions import ValidationError from django.shortcuts import get_object_or_404 from django.utils.translation import ugettext as _, ugettext_lazy diff --git a/modoboa/admin/signals.py b/modoboa/admin/signals.py index c915f0c18..79f2ed116 100644 --- a/modoboa/admin/signals.py +++ b/modoboa/admin/signals.py @@ -1,5 +1,7 @@ """Modoboa admin signals.""" +from __future__ import unicode_literals + import django.dispatch check_extra_account_form = django.dispatch.Signal( diff --git a/modoboa/admin/templatetags/__init__.py b/modoboa/admin/templatetags/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/admin/templatetags/__init__.py +++ b/modoboa/admin/templatetags/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/admin/templatetags/admin_tags.py b/modoboa/admin/templatetags/admin_tags.py index af301a446..60285fa0a 100644 --- a/modoboa/admin/templatetags/admin_tags.py +++ b/modoboa/admin/templatetags/admin_tags.py @@ -1,5 +1,7 @@ """Admin extension tags.""" +from __future__ import unicode_literals + from functools import reduce from django import template diff --git a/modoboa/admin/tests/__init__.py b/modoboa/admin/tests/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/admin/tests/__init__.py +++ b/modoboa/admin/tests/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/admin/tests/test_account.py b/modoboa/admin/tests/test_account.py index b2ae52cdc..86ad607d5 100644 --- a/modoboa/admin/tests/test_account.py +++ b/modoboa/admin/tests/test_account.py @@ -1,5 +1,7 @@ # coding: utf-8 +from __future__ import unicode_literals + from unittest import skipIf from django.core.urlresolvers import reverse diff --git a/modoboa/admin/tests/test_alias.py b/modoboa/admin/tests/test_alias.py index 4ad07d09d..62dc19bd2 100644 --- a/modoboa/admin/tests/test_alias.py +++ b/modoboa/admin/tests/test_alias.py @@ -1,5 +1,7 @@ # coding: utf-8 +from __future__ import unicode_literals + """Admin test cases.""" from django.core.urlresolvers import reverse diff --git a/modoboa/admin/tests/test_api.py b/modoboa/admin/tests/test_api.py index 8a824b08b..2b35c54e4 100644 --- a/modoboa/admin/tests/test_api.py +++ b/modoboa/admin/tests/test_api.py @@ -1,6 +1,8 @@ # coding: utf-8 """Admin API related tests.""" +from __future__ import unicode_literals + import copy import json diff --git a/modoboa/admin/tests/test_domain.py b/modoboa/admin/tests/test_domain.py index e71368f4f..907472906 100644 --- a/modoboa/admin/tests/test_domain.py +++ b/modoboa/admin/tests/test_domain.py @@ -1,5 +1,7 @@ # coding: utf-8 +from __future__ import unicode_literals + """Domain related test cases.""" import json diff --git a/modoboa/admin/tests/test_domain_alias.py b/modoboa/admin/tests/test_domain_alias.py index f5f21efcc..76f92fb16 100644 --- a/modoboa/admin/tests/test_domain_alias.py +++ b/modoboa/admin/tests/test_domain_alias.py @@ -1,5 +1,7 @@ # coding: utf-8 +from __future__ import unicode_literals + from django.core.urlresolvers import reverse from modoboa.lib.tests import ModoTestCase diff --git a/modoboa/admin/tests/test_export.py b/modoboa/admin/tests/test_export.py index f35eb8a9f..1b47bb906 100644 --- a/modoboa/admin/tests/test_export.py +++ b/modoboa/admin/tests/test_export.py @@ -1,5 +1,7 @@ """Export related test cases.""" +from __future__ import unicode_literals + from django.core.urlresolvers import reverse from modoboa.lib.tests import ModoTestCase diff --git a/modoboa/admin/tests/test_import_.py b/modoboa/admin/tests/test_import_.py index d468144f6..c495ea61a 100644 --- a/modoboa/admin/tests/test_import_.py +++ b/modoboa/admin/tests/test_import_.py @@ -1,4 +1,7 @@ # coding: utf-8 + +from __future__ import unicode_literals + from django.core.files.base import ContentFile from django.core.urlresolvers import reverse diff --git a/modoboa/admin/tests/test_mailbox_operations.py b/modoboa/admin/tests/test_mailbox_operations.py index d27d99233..bfcf9491e 100644 --- a/modoboa/admin/tests/test_mailbox_operations.py +++ b/modoboa/admin/tests/test_mailbox_operations.py @@ -1,5 +1,7 @@ """Management command tests.""" +from __future__ import unicode_literals + import os import shutil import tempfile diff --git a/modoboa/admin/tests/test_mapfiles.py b/modoboa/admin/tests/test_mapfiles.py index 255968353..ff0bd2ba1 100644 --- a/modoboa/admin/tests/test_mapfiles.py +++ b/modoboa/admin/tests/test_mapfiles.py @@ -1,5 +1,7 @@ """Test map files generation.""" +from __future__ import unicode_literals + import os from django.conf import settings diff --git a/modoboa/admin/tests/test_mx.py b/modoboa/admin/tests/test_mx.py index 1aa59656e..aa455f500 100644 --- a/modoboa/admin/tests/test_mx.py +++ b/modoboa/admin/tests/test_mx.py @@ -1,5 +1,7 @@ """DNSBL related tests.""" +from __future__ import unicode_literals + from django.core import management from django.core.urlresolvers import reverse from django.test import override_settings diff --git a/modoboa/admin/tests/test_password_schemes.py b/modoboa/admin/tests/test_password_schemes.py index 113c5d90b..160d1e0b2 100644 --- a/modoboa/admin/tests/test_password_schemes.py +++ b/modoboa/admin/tests/test_password_schemes.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + from django.core.urlresolvers import reverse from modoboa.core.models import User diff --git a/modoboa/admin/tests/test_repair.py b/modoboa/admin/tests/test_repair.py index f18178f3f..aa4ce47fd 100644 --- a/modoboa/admin/tests/test_repair.py +++ b/modoboa/admin/tests/test_repair.py @@ -1,4 +1,7 @@ """Repair command tests""" + +from __future__ import unicode_literals + from django.core import management from modoboa.lib.permissions import get_object_owner diff --git a/modoboa/admin/tests/test_user.py b/modoboa/admin/tests/test_user.py index 25eebb8c5..65a6efc06 100644 --- a/modoboa/admin/tests/test_user.py +++ b/modoboa/admin/tests/test_user.py @@ -1,5 +1,7 @@ """User related tests.""" +from __future__ import unicode_literals + import json from django.core.urlresolvers import reverse diff --git a/modoboa/admin/urls.py b/modoboa/admin/urls.py index 1934ced58..63958d202 100644 --- a/modoboa/admin/urls.py +++ b/modoboa/admin/urls.py @@ -1,6 +1,8 @@ # pylint: disable=invalid-name, protected-access """Admin urls.""" +from __future__ import unicode_literals + from django.conf.urls import url from . import views diff --git a/modoboa/admin/urls_api.py b/modoboa/admin/urls_api.py index 3c1051aed..1f0f9f0d4 100644 --- a/modoboa/admin/urls_api.py +++ b/modoboa/admin/urls_api.py @@ -1,5 +1,7 @@ """Admin API urls.""" +from __future__ import unicode_literals + from rest_framework import routers from . import api diff --git a/modoboa/admin/views/__init__.py b/modoboa/admin/views/__init__.py index e63b5b5e1..8c499c185 100644 --- a/modoboa/admin/views/__init__.py +++ b/modoboa/admin/views/__init__.py @@ -1,5 +1,7 @@ """Shortcuts.""" +from __future__ import unicode_literals + from .alias import AliasDetailView from .identity import AccountDetailView from .dns import DNSBLDomainDetailView, MXDomainDetailView diff --git a/modoboa/admin/views/alias.py b/modoboa/admin/views/alias.py index 1ec4aaf23..20b1c4635 100644 --- a/modoboa/admin/views/alias.py +++ b/modoboa/admin/views/alias.py @@ -1,5 +1,7 @@ """Alias related views.""" +from __future__ import unicode_literals + from django.core.urlresolvers import reverse from django.db import IntegrityError from django.shortcuts import render diff --git a/modoboa/admin/views/dns.py b/modoboa/admin/views/dns.py index c7381d0a6..591f3f3e5 100644 --- a/modoboa/admin/views/dns.py +++ b/modoboa/admin/views/dns.py @@ -1,5 +1,7 @@ """DNSBL related views.""" +from __future__ import unicode_literals + from django.views import generic from django.utils.translation import ugettext as _ diff --git a/modoboa/admin/views/domain.py b/modoboa/admin/views/domain.py index 26c6a9126..39eba12f2 100644 --- a/modoboa/admin/views/domain.py +++ b/modoboa/admin/views/domain.py @@ -1,5 +1,7 @@ """Domain related views.""" +from __future__ import unicode_literals + from functools import reduce from django.core.urlresolvers import reverse diff --git a/modoboa/admin/views/export.py b/modoboa/admin/views/export.py index a9c78920e..57edc87bf 100644 --- a/modoboa/admin/views/export.py +++ b/modoboa/admin/views/export.py @@ -1,5 +1,7 @@ """Export related views.""" +from __future__ import unicode_literals + import csv import io diff --git a/modoboa/admin/views/identity.py b/modoboa/admin/views/identity.py index b77773c5b..a38bc430d 100644 --- a/modoboa/admin/views/identity.py +++ b/modoboa/admin/views/identity.py @@ -1,5 +1,7 @@ """Identity related views.""" +from __future__ import unicode_literals + from django.shortcuts import render from django.template.loader import render_to_string from django.utils.translation import ugettext as _, ungettext diff --git a/modoboa/admin/views/import_.py b/modoboa/admin/views/import_.py index bf749f78f..1bf5f78d2 100644 --- a/modoboa/admin/views/import_.py +++ b/modoboa/admin/views/import_.py @@ -1,5 +1,7 @@ """Import related views.""" +from __future__ import unicode_literals + import csv from django.contrib.auth.decorators import ( diff --git a/modoboa/admin/views/user.py b/modoboa/admin/views/user.py index 07af14f4e..424111919 100644 --- a/modoboa/admin/views/user.py +++ b/modoboa/admin/views/user.py @@ -1,5 +1,7 @@ """SimpleUsers views.""" +from __future__ import unicode_literals + from django.template.loader import render_to_string from django.utils.translation import ugettext as _ diff --git a/modoboa/core/__init__.py b/modoboa/core/__init__.py index 0f5234285..c9be3cc2e 100644 --- a/modoboa/core/__init__.py +++ b/modoboa/core/__init__.py @@ -1,3 +1,5 @@ """App config for core.""" +from __future__ import unicode_literals + default_app_config = "modoboa.core.apps.CoreConfig" diff --git a/modoboa/core/app_settings.py b/modoboa/core/app_settings.py index b0f9b9f43..47742a503 100644 --- a/modoboa/core/app_settings.py +++ b/modoboa/core/app_settings.py @@ -1,4 +1,7 @@ # coding: utf-8 + +from __future__ import unicode_literals + from django import forms from django.conf import settings from django.utils.translation import ugettext as _, ugettext_lazy diff --git a/modoboa/core/apps.py b/modoboa/core/apps.py index a3d6e5dab..d676eb44a 100644 --- a/modoboa/core/apps.py +++ b/modoboa/core/apps.py @@ -1,5 +1,7 @@ """Core config for admin.""" +from __future__ import unicode_literals + from django.apps import AppConfig from django.db.models import signals from django.utils.translation import ugettext_lazy diff --git a/modoboa/core/commands/__init__.py b/modoboa/core/commands/__init__.py index 1a53c3120..a45b85a9d 100644 --- a/modoboa/core/commands/__init__.py +++ b/modoboa/core/commands/__init__.py @@ -1,6 +1,6 @@ # coding: utf-8 -from __future__ import print_function +from __future__ import unicode_literals, print_function import argparse import os @@ -8,6 +8,7 @@ import sys from django.conf import settings from django.template import Context, Template +from django.utils import six class Command(object): @@ -65,8 +66,12 @@ def scan_for_commands(dirname=""): if os.path.isfile(f): continue cmdname = f.replace(".py", "") + if six.PY2: + fromlist = [cmdname.encode()] + else: + fromlist = [cmdname] cmdmod = __import__("modoboa.core.commands", globals(), locals(), - [cmdname]) + fromlist) cmdmod = getattr(cmdmod, cmdname) if "_" in cmdname: cmdclassname = "".join( diff --git a/modoboa/core/commands/deploy.py b/modoboa/core/commands/deploy.py index 61eb4eab8..6f07ef462 100644 --- a/modoboa/core/commands/deploy.py +++ b/modoboa/core/commands/deploy.py @@ -2,7 +2,7 @@ """A shortcut to deploy a fresh modoboa instance.""" -from __future__ import print_function +from __future__ import unicode_literals, print_function import getpass import os @@ -21,6 +21,7 @@ except ImportError: import django from django.core import management from django.template import Context, Template +from django.utils import six import dj_database_url from modoboa.core.commands import Command @@ -231,7 +232,11 @@ class DeployCommand(Command): os.path.join(os.path.dirname(__file__), "../../bower_components") ) - mod = __import__(parsed_args.name, globals(), locals(), ['settings']) + if six.PY2: + fromlist = ['settings'.encode()] + else: + fromlist = ['settings'] + mod = __import__(parsed_args.name, globals(), locals(), fromlist) tpl = self._render_template( "%s/settings.py.tpl" % self._templates_dir, { 'db_connections': connections, diff --git a/modoboa/core/commands/help.py b/modoboa/core/commands/help.py index adcac4887..88c7efc0b 100644 --- a/modoboa/core/commands/help.py +++ b/modoboa/core/commands/help.py @@ -1,6 +1,6 @@ # coding: utf-8 -from __future__ import print_function +from __future__ import unicode_literals, print_function import sys diff --git a/modoboa/core/constants.py b/modoboa/core/constants.py index 6a9d2be6e..a024e5fa3 100644 --- a/modoboa/core/constants.py +++ b/modoboa/core/constants.py @@ -2,6 +2,8 @@ """Core application constants.""" +from __future__ import unicode_literals + from django.utils.translation import ugettext_lazy SIMPLEUSERS_ROLE = ("SimpleUsers", ugettext_lazy("Simple user")) diff --git a/modoboa/core/context_processors.py b/modoboa/core/context_processors.py index 3bd8a3c92..72d4ba435 100644 --- a/modoboa/core/context_processors.py +++ b/modoboa/core/context_processors.py @@ -1,5 +1,7 @@ """Custom context processors.""" +from __future__ import unicode_literals + from functools import reduce from . import signals diff --git a/modoboa/core/dev_settings.py b/modoboa/core/dev_settings.py index ed1a3b6cb..cbc4b1b54 100644 --- a/modoboa/core/dev_settings.py +++ b/modoboa/core/dev_settings.py @@ -1,4 +1,7 @@ # Development settings + +from __future__ import unicode_literals + import os BOWER_COMPONENTS_ROOT = os.path.join( diff --git a/modoboa/core/extensions.py b/modoboa/core/extensions.py index 3df7f0fea..5b4732204 100644 --- a/modoboa/core/extensions.py +++ b/modoboa/core/extensions.py @@ -1,7 +1,10 @@ """Extension management.""" +from __future__ import unicode_literals + from django.conf import settings from django.conf.urls import include, url +from django.utils import six class ModoExtension(object): @@ -76,7 +79,11 @@ class ExtensionsPool(object): def load_extension(self, name): """Load a registered extension.""" - __import__(name, locals(), globals(), ["modo_extension"]) + if six.PY2: + fromlist = ["modo_extension".encode()] + else: + fromlist = ["modo_extension"] + __import__(name, locals(), globals(), fromlist) extinstance = self.get_extension(name) if extinstance is None: return None diff --git a/modoboa/core/factories.py b/modoboa/core/factories.py index c375d09c5..9624ab0d5 100644 --- a/modoboa/core/factories.py +++ b/modoboa/core/factories.py @@ -1,5 +1,7 @@ """Factories for core application.""" +from __future__ import unicode_literals + import factory from django.contrib.auth.models import Group diff --git a/modoboa/core/forms.py b/modoboa/core/forms.py index 26dd71847..c2a021f1f 100644 --- a/modoboa/core/forms.py +++ b/modoboa/core/forms.py @@ -2,6 +2,8 @@ """Core forms.""" +from __future__ import unicode_literals + from django import forms from django.utils.translation import ugettext as _, ugettext_lazy diff --git a/modoboa/core/handlers.py b/modoboa/core/handlers.py index 9b904de36..a953cdc20 100644 --- a/modoboa/core/handlers.py +++ b/modoboa/core/handlers.py @@ -1,5 +1,7 @@ """Modoboa core signal handlers.""" +from __future__ import unicode_literals + import logging from django.core.urlresolvers import reverse diff --git a/modoboa/core/loggers.py b/modoboa/core/loggers.py index 35efe0397..c6dd24a05 100644 --- a/modoboa/core/loggers.py +++ b/modoboa/core/loggers.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + import logging diff --git a/modoboa/core/management/__init__.py b/modoboa/core/management/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/core/management/__init__.py +++ b/modoboa/core/management/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/core/management/commands/__init__.py b/modoboa/core/management/commands/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/core/management/commands/__init__.py +++ b/modoboa/core/management/commands/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/core/management/commands/cleanlogs.py b/modoboa/core/management/commands/cleanlogs.py index 16c0e0b60..1513819c3 100644 --- a/modoboa/core/management/commands/cleanlogs.py +++ b/modoboa/core/management/commands/cleanlogs.py @@ -1,6 +1,6 @@ # coding: utf-8 -from __future__ import print_function +from __future__ import print_function, unicode_literals import datetime import logging diff --git a/modoboa/core/management/commands/communicate_with_public_api.py b/modoboa/core/management/commands/communicate_with_public_api.py index dcd003a54..39dbdde28 100644 --- a/modoboa/core/management/commands/communicate_with_public_api.py +++ b/modoboa/core/management/commands/communicate_with_public_api.py @@ -1,5 +1,7 @@ """Management command to communicate with public API.""" +from __future__ import unicode_literals + from django.core.management.base import BaseCommand, CommandError from modoboa.admin import models as admin_models diff --git a/modoboa/core/management/commands/generate_postfix_maps.py b/modoboa/core/management/commands/generate_postfix_maps.py index fbce3dc97..5fc15510f 100644 --- a/modoboa/core/management/commands/generate_postfix_maps.py +++ b/modoboa/core/management/commands/generate_postfix_maps.py @@ -1,5 +1,5 @@ """Management command to generate/update postfix map files.""" -from __future__ import print_function +from __future__ import print_function, unicode_literals import copy import hashlib diff --git a/modoboa/core/management/commands/load_initial_data.py b/modoboa/core/management/commands/load_initial_data.py index c3d82064d..5c746481d 100644 --- a/modoboa/core/management/commands/load_initial_data.py +++ b/modoboa/core/management/commands/load_initial_data.py @@ -5,6 +5,8 @@ """ +from __future__ import unicode_literals + from functools import reduce from django.contrib.auth.models import Group diff --git a/modoboa/core/management/commands/set_default_site.py b/modoboa/core/management/commands/set_default_site.py index 78db35a1f..d80268a10 100644 --- a/modoboa/core/management/commands/set_default_site.py +++ b/modoboa/core/management/commands/set_default_site.py @@ -5,6 +5,8 @@ A simple managemenent command to update the default site. See `https://docs.djangoproject.com/en/dev/ref/contrib/sites/`_. """ +from __future__ import unicode_literals + from django.core.management.base import BaseCommand, CommandError from django.contrib.sites.models import Site diff --git a/modoboa/core/middleware.py b/modoboa/core/middleware.py index c1463be56..f8f66b403 100644 --- a/modoboa/core/middleware.py +++ b/modoboa/core/middleware.py @@ -1,5 +1,7 @@ """Core middlewares.""" +from __future__ import unicode_literals + from . import models diff --git a/modoboa/core/migrations/__init__.py b/modoboa/core/migrations/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/core/migrations/__init__.py +++ b/modoboa/core/migrations/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/core/mocks.py b/modoboa/core/mocks.py index 7c8f245f7..e593bfc3f 100644 --- a/modoboa/core/mocks.py +++ b/modoboa/core/mocks.py @@ -1,5 +1,7 @@ """Mocks used for testing.""" +from __future__ import unicode_literals + import httmock diff --git a/modoboa/core/models.py b/modoboa/core/models.py index 66b1ea954..928c0c873 100644 --- a/modoboa/core/models.py +++ b/modoboa/core/models.py @@ -1,5 +1,7 @@ """Core models.""" +from __future__ import unicode_literals + from email.header import Header import re diff --git a/modoboa/core/password_hashers/__init__.py b/modoboa/core/password_hashers/__init__.py index 653b0dd56..6269c666c 100644 --- a/modoboa/core/password_hashers/__init__.py +++ b/modoboa/core/password_hashers/__init__.py @@ -1,6 +1,9 @@ """ Password hashers for Modoboa. """ + +from __future__ import unicode_literals + from modoboa.core.password_hashers.base import ( PLAINHasher, CRYPTHasher, MD5Hasher, SHA256Hasher ) diff --git a/modoboa/core/password_hashers/advanced.py b/modoboa/core/password_hashers/advanced.py index c14245e29..ad27ae865 100644 --- a/modoboa/core/password_hashers/advanced.py +++ b/modoboa/core/password_hashers/advanced.py @@ -4,6 +4,8 @@ Advanced (ie. stronger) password hashers. This module relies on `passlib` to provide more secure hashers. """ +from __future__ import unicode_literals + from passlib.hash import bcrypt, md5_crypt, sha256_crypt, sha512_crypt from modoboa.parameters import tools as param_tools diff --git a/modoboa/core/password_hashers/base.py b/modoboa/core/password_hashers/base.py index b9050f4ca..3f4b0c8d6 100644 --- a/modoboa/core/password_hashers/base.py +++ b/modoboa/core/password_hashers/base.py @@ -4,6 +4,8 @@ Base password hashers. Contains weak hashers (the original ones) available with Modoboa. """ +from __future__ import unicode_literals + import base64 import crypt import hashlib diff --git a/modoboa/core/signals.py b/modoboa/core/signals.py index 409dc2e0b..56b640ec9 100644 --- a/modoboa/core/signals.py +++ b/modoboa/core/signals.py @@ -1,5 +1,7 @@ """Modoboa core signals.""" +from __future__ import unicode_literals + import django.dispatch account_auto_created = django.dispatch.Signal(providing_args=["user"]) diff --git a/modoboa/core/templatetags/__init__.py b/modoboa/core/templatetags/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/core/templatetags/__init__.py +++ b/modoboa/core/templatetags/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/core/templatetags/core_tags.py b/modoboa/core/templatetags/core_tags.py index 70b32fc4a..44d0735a4 100644 --- a/modoboa/core/templatetags/core_tags.py +++ b/modoboa/core/templatetags/core_tags.py @@ -1,6 +1,8 @@ # coding: utf-8 """Custom tags for Core application.""" +from __future__ import unicode_literals + from functools import reduce import os import pkg_resources diff --git a/modoboa/core/tests/__init__.py b/modoboa/core/tests/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/core/tests/__init__.py +++ b/modoboa/core/tests/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/core/tests/stupid_extension_1/__init__.py b/modoboa/core/tests/stupid_extension_1/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/core/tests/stupid_extension_1/__init__.py +++ b/modoboa/core/tests/stupid_extension_1/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/core/tests/stupid_extension_1/modo_extension.py b/modoboa/core/tests/stupid_extension_1/modo_extension.py index 4cc7f4121..4115447d0 100644 --- a/modoboa/core/tests/stupid_extension_1/modo_extension.py +++ b/modoboa/core/tests/stupid_extension_1/modo_extension.py @@ -1,5 +1,7 @@ """A stupid extension used for tests.""" +from __future__ import unicode_literals + from modoboa.core import extensions diff --git a/modoboa/core/tests/stupid_extension_2/__init__.py b/modoboa/core/tests/stupid_extension_2/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/core/tests/stupid_extension_2/__init__.py +++ b/modoboa/core/tests/stupid_extension_2/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/core/tests/stupid_extension_2/modo_extension.py b/modoboa/core/tests/stupid_extension_2/modo_extension.py index 47824e924..e2adace26 100644 --- a/modoboa/core/tests/stupid_extension_2/modo_extension.py +++ b/modoboa/core/tests/stupid_extension_2/modo_extension.py @@ -1,5 +1,7 @@ """A stupid extension used for tests.""" +from __future__ import unicode_literals + from modoboa.core import extensions @@ -11,4 +13,5 @@ class StupidExtension2(extensions.ModoExtension): version = "1.0.0" description = "A stupid extension" + extensions.exts_pool.register_extension(StupidExtension2, show=False) diff --git a/modoboa/core/tests/stupid_extension_2/urls.py b/modoboa/core/tests/stupid_extension_2/urls.py index a7996a92b..43f39f251 100644 --- a/modoboa/core/tests/stupid_extension_2/urls.py +++ b/modoboa/core/tests/stupid_extension_2/urls.py @@ -1,5 +1,7 @@ """Custom urls.""" +from __future__ import unicode_literals + from django.conf.urls import url from . import views diff --git a/modoboa/core/tests/stupid_extension_2/views.py b/modoboa/core/tests/stupid_extension_2/views.py index 4a5f6dd70..25d1b2268 100644 --- a/modoboa/core/tests/stupid_extension_2/views.py +++ b/modoboa/core/tests/stupid_extension_2/views.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + from django import http diff --git a/modoboa/core/tests/test_authentication.py b/modoboa/core/tests/test_authentication.py index 764dadaf0..e3e9a47d0 100644 --- a/modoboa/core/tests/test_authentication.py +++ b/modoboa/core/tests/test_authentication.py @@ -1,5 +1,7 @@ """Tests for core application.""" +from __future__ import unicode_literals + import smtplib from mock import patch diff --git a/modoboa/core/tests/test_core.py b/modoboa/core/tests/test_core.py index 2fae9c971..217e379a3 100644 --- a/modoboa/core/tests/test_core.py +++ b/modoboa/core/tests/test_core.py @@ -1,5 +1,7 @@ """Tests for core application.""" +from __future__ import unicode_literals + import httmock from dateutil.relativedelta import relativedelta diff --git a/modoboa/core/tests/test_extensions.py b/modoboa/core/tests/test_extensions.py index d220f3318..2ceee2307 100644 --- a/modoboa/core/tests/test_extensions.py +++ b/modoboa/core/tests/test_extensions.py @@ -1,12 +1,13 @@ """Extensions management related test cases.""" +from __future__ import unicode_literals + import os import sys from testfixtures import compare from django.core import management -from django.core.urlresolvers import reverse from django.test import TestCase, override_settings from .. import extensions diff --git a/modoboa/core/tests/test_ldap.py b/modoboa/core/tests/test_ldap.py index 182fae6dd..d7b166594 100644 --- a/modoboa/core/tests/test_ldap.py +++ b/modoboa/core/tests/test_ldap.py @@ -1,5 +1,7 @@ """Tests for core application.""" +from __future__ import unicode_literals + from unittest import skipIf from django.core.urlresolvers import reverse diff --git a/modoboa/core/tests/test_views.py b/modoboa/core/tests/test_views.py index 88ca94b41..aa09458de 100644 --- a/modoboa/core/tests/test_views.py +++ b/modoboa/core/tests/test_views.py @@ -1,5 +1,7 @@ """Core views test cases.""" +from __future__ import unicode_literals + import json from testfixtures import compare diff --git a/modoboa/core/urls.py b/modoboa/core/urls.py index 1d086effd..d3f34ba00 100644 --- a/modoboa/core/urls.py +++ b/modoboa/core/urls.py @@ -1,5 +1,7 @@ """Core urls.""" +from __future__ import unicode_literals + from django.conf.urls import url from . import views diff --git a/modoboa/core/utils.py b/modoboa/core/utils.py index 371e5b33a..43af52c8d 100644 --- a/modoboa/core/utils.py +++ b/modoboa/core/utils.py @@ -1,5 +1,7 @@ """Utility functions.""" +from __future__ import unicode_literals + from django.utils.translation import ugettext as _ from versionfield.constants import DEFAULT_NUMBER_BITS diff --git a/modoboa/core/views/__init__.py b/modoboa/core/views/__init__.py index 6df7980e4..45177a4e3 100644 --- a/modoboa/core/views/__init__.py +++ b/modoboa/core/views/__init__.py @@ -1,5 +1,7 @@ """Core views.""" +from __future__ import unicode_literals + from .admin import ( check_top_notifications, information, logs, logs_page, parameters, viewsettings) diff --git a/modoboa/core/views/admin.py b/modoboa/core/views/admin.py index e224decd7..6771dedb1 100644 --- a/modoboa/core/views/admin.py +++ b/modoboa/core/views/admin.py @@ -1,5 +1,7 @@ """Views available to super administrators only.""" +from __future__ import unicode_literals + from functools import reduce from django.contrib.auth.decorators import ( diff --git a/modoboa/core/views/auth.py b/modoboa/core/views/auth.py index 5ca158c1d..2b049b676 100644 --- a/modoboa/core/views/auth.py +++ b/modoboa/core/views/auth.py @@ -1,6 +1,8 @@ # coding: utf-8 """Core authentication views.""" +from __future__ import unicode_literals + import logging from django.core.urlresolvers import reverse diff --git a/modoboa/core/views/base.py b/modoboa/core/views/base.py index 0129de9ac..2470adfa4 100644 --- a/modoboa/core/views/base.py +++ b/modoboa/core/views/base.py @@ -1,5 +1,7 @@ """Base core views.""" +from __future__ import unicode_literals + from django.core.urlresolvers import reverse from django.views import generic diff --git a/modoboa/core/views/dashboard.py b/modoboa/core/views/dashboard.py index a6c9ceb00..9731096d4 100644 --- a/modoboa/core/views/dashboard.py +++ b/modoboa/core/views/dashboard.py @@ -1,5 +1,7 @@ """Core dashboard views.""" +from __future__ import unicode_literals + from dateutil import parser import feedparser import requests diff --git a/modoboa/core/views/user.py b/modoboa/core/views/user.py index feae310d0..dd01f270b 100644 --- a/modoboa/core/views/user.py +++ b/modoboa/core/views/user.py @@ -1,5 +1,7 @@ """Simple user views.""" +from __future__ import unicode_literals + from django.shortcuts import render from django.template.loader import render_to_string from django.utils import translation diff --git a/modoboa/lib/__init__.py b/modoboa/lib/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/lib/__init__.py +++ b/modoboa/lib/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/lib/api_client.py b/modoboa/lib/api_client.py index ea44bcf59..098e5f8d6 100644 --- a/modoboa/lib/api_client.py +++ b/modoboa/lib/api_client.py @@ -1,5 +1,7 @@ """A client for Modoboa's public API.""" +from __future__ import unicode_literals + import os import pkg_resources diff --git a/modoboa/lib/authbackends.py b/modoboa/lib/authbackends.py index c3c1c3f8b..59d46678e 100644 --- a/modoboa/lib/authbackends.py +++ b/modoboa/lib/authbackends.py @@ -1,5 +1,7 @@ """Custom authentication backends.""" +from __future__ import unicode_literals + import smtplib from django.conf import settings diff --git a/modoboa/lib/connections.py b/modoboa/lib/connections.py index 3cb4f175a..09287c5e8 100644 --- a/modoboa/lib/connections.py +++ b/modoboa/lib/connections.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + from modoboa.lib.cryptutils import decrypt diff --git a/modoboa/lib/db_utils.py b/modoboa/lib/db_utils.py index 42c8dd55f..8f6999aad 100644 --- a/modoboa/lib/db_utils.py +++ b/modoboa/lib/db_utils.py @@ -1,5 +1,7 @@ # coding: utf-8 +from __future__ import unicode_literals + from django.conf import settings from django.db import connection from django.utils.translation import ugettext as _ diff --git a/modoboa/lib/email_utils.py b/modoboa/lib/email_utils.py index 50790187c..ed1015e8a 100644 --- a/modoboa/lib/email_utils.py +++ b/modoboa/lib/email_utils.py @@ -1,5 +1,7 @@ # coding: utf-8 +from __future__ import unicode_literals + from email.header import Header, decode_header from email.mime.text import MIMEText from email.utils import make_msgid, formatdate, parseaddr diff --git a/modoboa/lib/exceptions.py b/modoboa/lib/exceptions.py index 82c1135f0..4bdd15896 100644 --- a/modoboa/lib/exceptions.py +++ b/modoboa/lib/exceptions.py @@ -4,6 +4,9 @@ ----------------------------------------------- """ + +from __future__ import unicode_literals + from django.utils.translation import ugettext as _ diff --git a/modoboa/lib/fields.py b/modoboa/lib/fields.py index c5e81ff11..4dcaf2998 100644 --- a/modoboa/lib/fields.py +++ b/modoboa/lib/fields.py @@ -1,5 +1,7 @@ """Custom form fields.""" +from __future__ import unicode_literals + from django import forms from django.utils.translation import ugettext_lazy diff --git a/modoboa/lib/imap_utf7.py b/modoboa/lib/imap_utf7.py index 28fccacc8..611729a53 100644 --- a/modoboa/lib/imap_utf7.py +++ b/modoboa/lib/imap_utf7.py @@ -51,7 +51,7 @@ Found here: http://svn.plone.org/svn/collective/mxmImapClient/trunk/imapUTF7.py """ -from __future__ import print_function +from __future__ import print_function, unicode_literals import binascii import codecs diff --git a/modoboa/lib/ldap_utils.py b/modoboa/lib/ldap_utils.py index 2988ee889..26d29fb65 100644 --- a/modoboa/lib/ldap_utils.py +++ b/modoboa/lib/ldap_utils.py @@ -33,6 +33,8 @@ Extracted from `this blog """ +from __future__ import unicode_literals + import ldap from django.conf import settings diff --git a/modoboa/lib/listing.py b/modoboa/lib/listing.py index e8f38f84d..c77e7dcf1 100644 --- a/modoboa/lib/listing.py +++ b/modoboa/lib/listing.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from modoboa.parameters import tools as param_tools diff --git a/modoboa/lib/middleware.py b/modoboa/lib/middleware.py index ee2f074c3..6fd7c77f2 100644 --- a/modoboa/lib/middleware.py +++ b/modoboa/lib/middleware.py @@ -2,6 +2,8 @@ """Custom middlewares.""" +from __future__ import unicode_literals + from django.http import HttpResponseRedirect from django.utils.encoding import smart_text diff --git a/modoboa/lib/migrations/__init__.py b/modoboa/lib/migrations/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/lib/migrations/__init__.py +++ b/modoboa/lib/migrations/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/lib/paginator.py b/modoboa/lib/paginator.py index 79ecf94dd..2c5658a54 100644 --- a/modoboa/lib/paginator.py +++ b/modoboa/lib/paginator.py @@ -2,6 +2,8 @@ Custom pagination tools. """ +from __future__ import unicode_literals + class Page(object): diff --git a/modoboa/lib/signals.py b/modoboa/lib/signals.py index 2a114e8c3..f203de7c3 100644 --- a/modoboa/lib/signals.py +++ b/modoboa/lib/signals.py @@ -1,5 +1,7 @@ """Custom signals.""" +from __future__ import unicode_literals + from threading import local _local_store = local() diff --git a/modoboa/lib/singleton.py b/modoboa/lib/singleton.py index 3fd8f0c17..da4210794 100644 --- a/modoboa/lib/singleton.py +++ b/modoboa/lib/singleton.py @@ -1,4 +1,4 @@ - +from __future__ import unicode_literals # works in Python 2 & 3 class _Singleton(type): diff --git a/modoboa/lib/sysutils.py b/modoboa/lib/sysutils.py index 9fc62187b..aff56e97a 100644 --- a/modoboa/lib/sysutils.py +++ b/modoboa/lib/sysutils.py @@ -4,6 +4,9 @@ This module extra functions/shortcuts to communicate with the system (executing commands, etc.) """ + +from __future__ import unicode_literals + import subprocess import inspect import re diff --git a/modoboa/lib/templatetags/__init__.py b/modoboa/lib/templatetags/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/lib/templatetags/__init__.py +++ b/modoboa/lib/templatetags/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/lib/templatetags/form_tags.py b/modoboa/lib/templatetags/form_tags.py index c993f0506..11db3bf90 100644 --- a/modoboa/lib/templatetags/form_tags.py +++ b/modoboa/lib/templatetags/form_tags.py @@ -2,6 +2,8 @@ Form rendering tags. """ +from __future__ import unicode_literals + from django import forms from django import template from django.utils.encoding import smart_text diff --git a/modoboa/lib/templatetags/lib_tags.py b/modoboa/lib/templatetags/lib_tags.py index 1342f27c4..ef7a9da2d 100644 --- a/modoboa/lib/templatetags/lib_tags.py +++ b/modoboa/lib/templatetags/lib_tags.py @@ -1,6 +1,8 @@ # coding: utf-8 """Custom template tags.""" +from __future__ import unicode_literals + from datetime import datetime from django import template diff --git a/modoboa/lib/test_utils.py b/modoboa/lib/test_utils.py index e4bb1e4d9..640c199f0 100644 --- a/modoboa/lib/test_utils.py +++ b/modoboa/lib/test_utils.py @@ -1,5 +1,7 @@ """Tools for top level testing (ie. when ran by Travis).""" +from __future__ import unicode_literals + import os import shutil import tempfile diff --git a/modoboa/lib/tests.py b/modoboa/lib/tests.py index c2544717c..99d6186d1 100644 --- a/modoboa/lib/tests.py +++ b/modoboa/lib/tests.py @@ -1,6 +1,8 @@ # coding: utf-8 """Testing utilities.""" +from __future__ import unicode_literals + import json from django.core import management diff --git a/modoboa/lib/u2u_decode.py b/modoboa/lib/u2u_decode.py index cf4880c62..39c498977 100644 --- a/modoboa/lib/u2u_decode.py +++ b/modoboa/lib/u2u_decode.py @@ -2,6 +2,8 @@ """Unstructured rfc2047 header to unicode.""" +from __future__ import unicode_literals + from email.header import decode_header, make_header import re diff --git a/modoboa/lib/validators.py b/modoboa/lib/validators.py index 83c569ad1..c440eb805 100644 --- a/modoboa/lib/validators.py +++ b/modoboa/lib/validators.py @@ -1,5 +1,7 @@ """Field validators.""" +from __future__ import unicode_literals + import re from django.core.exceptions import ValidationError diff --git a/modoboa/lib/web_utils.py b/modoboa/lib/web_utils.py index b7607d75c..555a1ebf4 100644 --- a/modoboa/lib/web_utils.py +++ b/modoboa/lib/web_utils.py @@ -4,6 +4,8 @@ This module contains extra functions/shortcuts used to render HTML. """ +from __future__ import unicode_literals + import json import re import sys diff --git a/modoboa/limits/__init__.py b/modoboa/limits/__init__.py index 1816137f6..990d4c137 100644 --- a/modoboa/limits/__init__.py +++ b/modoboa/limits/__init__.py @@ -1 +1,3 @@ +from __future__ import unicode_literals + default_app_config = "modoboa.limits.apps.LimitsConfig" diff --git a/modoboa/limits/app_settings.py b/modoboa/limits/app_settings.py index cf77296b3..9a724e671 100644 --- a/modoboa/limits/app_settings.py +++ b/modoboa/limits/app_settings.py @@ -1,5 +1,7 @@ """Custom settings.""" +from __future__ import unicode_literals + from django import forms from django.utils.translation import ugettext_lazy as _ diff --git a/modoboa/limits/apps.py b/modoboa/limits/apps.py index f91abd69a..4716d1f19 100644 --- a/modoboa/limits/apps.py +++ b/modoboa/limits/apps.py @@ -1,5 +1,7 @@ """App config for limits.""" +from __future__ import unicode_literals + from django.apps import AppConfig from django.utils.translation import ugettext as _ diff --git a/modoboa/limits/constants.py b/modoboa/limits/constants.py index 069729e24..f12d5818f 100644 --- a/modoboa/limits/constants.py +++ b/modoboa/limits/constants.py @@ -1,5 +1,7 @@ """Modoboa limits constants.""" +from __future__ import unicode_literals + import collections from django.utils.translation import ugettext_lazy as _ diff --git a/modoboa/limits/forms.py b/modoboa/limits/forms.py index bc4182684..a30d86f88 100644 --- a/modoboa/limits/forms.py +++ b/modoboa/limits/forms.py @@ -2,6 +2,8 @@ """Custom forms.""" +from __future__ import unicode_literals + from django import forms from django.utils.translation import ugettext as _ diff --git a/modoboa/limits/handlers.py b/modoboa/limits/handlers.py index 29bb1b776..8602f2bc6 100644 --- a/modoboa/limits/handlers.py +++ b/modoboa/limits/handlers.py @@ -1,5 +1,7 @@ """Django signal handlers for limits.""" +from __future__ import unicode_literals + from django.db.models import signals from django.dispatch import receiver from django.template.loader import render_to_string diff --git a/modoboa/limits/lib.py b/modoboa/limits/lib.py index 35af3b584..500cdf454 100644 --- a/modoboa/limits/lib.py +++ b/modoboa/limits/lib.py @@ -4,6 +4,9 @@ ------------------------------- """ + +from __future__ import unicode_literals + from django.utils.translation import ugettext as _ from modoboa.lib.exceptions import ModoboaException diff --git a/modoboa/limits/migrations/__init__.py b/modoboa/limits/migrations/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/limits/migrations/__init__.py +++ b/modoboa/limits/migrations/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/limits/models.py b/modoboa/limits/models.py index 0986eb756..0797a7557 100644 --- a/modoboa/limits/models.py +++ b/modoboa/limits/models.py @@ -2,6 +2,8 @@ """Models for the limits extensions.""" +from __future__ import unicode_literals + from django.conf import settings from django.db import models from django.utils.encoding import python_2_unicode_compatible diff --git a/modoboa/limits/serializers.py b/modoboa/limits/serializers.py index a4e63b2a6..8b447ad71 100644 --- a/modoboa/limits/serializers.py +++ b/modoboa/limits/serializers.py @@ -1,5 +1,7 @@ """Limits serializers.""" +from __future__ import unicode_literals + from rest_framework import serializers from . import lib diff --git a/modoboa/limits/tests/__init__.py b/modoboa/limits/tests/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/limits/tests/__init__.py +++ b/modoboa/limits/tests/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/limits/tests/test_api.py b/modoboa/limits/tests/test_api.py index 5917c777f..b13a2246f 100644 --- a/modoboa/limits/tests/test_api.py +++ b/modoboa/limits/tests/test_api.py @@ -1,6 +1,8 @@ # coding: utf-8 """Test cases for the limits extension.""" +from __future__ import unicode_literals + from testfixtures import compare from django.core.urlresolvers import reverse diff --git a/modoboa/limits/tests/test_domain_limits.py b/modoboa/limits/tests/test_domain_limits.py index dede7d468..0122c418f 100644 --- a/modoboa/limits/tests/test_domain_limits.py +++ b/modoboa/limits/tests/test_domain_limits.py @@ -1,6 +1,8 @@ # coding: utf-8 """Test cases for the limits extension.""" +from __future__ import unicode_literals + from django.core.urlresolvers import reverse from modoboa.admin import factories as admin_factories diff --git a/modoboa/limits/tests/test_import.py b/modoboa/limits/tests/test_import.py index e6702a773..7f8e4603f 100644 --- a/modoboa/limits/tests/test_import.py +++ b/modoboa/limits/tests/test_import.py @@ -1,5 +1,7 @@ # coding: utf-8 +from __future__ import unicode_literals + from django.core.files.base import ContentFile from django.core.urlresolvers import reverse diff --git a/modoboa/limits/tests/test_user_limits.py b/modoboa/limits/tests/test_user_limits.py index c871e0b58..e57618755 100644 --- a/modoboa/limits/tests/test_user_limits.py +++ b/modoboa/limits/tests/test_user_limits.py @@ -1,6 +1,8 @@ # coding: utf-8 """Test cases for the limits extension.""" +from __future__ import unicode_literals + from django.core.urlresolvers import reverse from modoboa.admin.factories import populate_database diff --git a/modoboa/limits/urls_api.py b/modoboa/limits/urls_api.py index de97d5718..dad167523 100644 --- a/modoboa/limits/urls_api.py +++ b/modoboa/limits/urls_api.py @@ -1,5 +1,7 @@ """Limits API urls.""" +from __future__ import unicode_literals + from rest_framework import routers from . import viewsets diff --git a/modoboa/limits/utils.py b/modoboa/limits/utils.py index 692cafd01..265a579ca 100644 --- a/modoboa/limits/utils.py +++ b/modoboa/limits/utils.py @@ -1,5 +1,7 @@ """Modoboa limits utilities.""" +from __future__ import unicode_literals + from . import constants diff --git a/modoboa/limits/views.py b/modoboa/limits/views.py index 57d631c3f..e17c22b7f 100644 --- a/modoboa/limits/views.py +++ b/modoboa/limits/views.py @@ -1 +1,3 @@ # coding: utf-8 + +from __future__ import unicode_literals diff --git a/modoboa/limits/viewsets.py b/modoboa/limits/viewsets.py index 1b7fff120..2d792ca75 100644 --- a/modoboa/limits/viewsets.py +++ b/modoboa/limits/viewsets.py @@ -1,5 +1,7 @@ """Limits API.""" +from __future__ import unicode_literals + from django.contrib.contenttypes.models import ContentType from rest_framework import mixins, viewsets diff --git a/modoboa/parameters/__init__.py b/modoboa/parameters/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/parameters/__init__.py +++ b/modoboa/parameters/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/parameters/forms.py b/modoboa/parameters/forms.py index f456dae16..d26996e13 100644 --- a/modoboa/parameters/forms.py +++ b/modoboa/parameters/forms.py @@ -1,5 +1,7 @@ """Parameters forms.""" +from __future__ import unicode_literals + from django import forms from modoboa.lib import db_utils diff --git a/modoboa/parameters/tests.py b/modoboa/parameters/tests.py index 7ce503c2d..36fcdafd1 100644 --- a/modoboa/parameters/tests.py +++ b/modoboa/parameters/tests.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + from django.test import TestCase # Create your tests here. diff --git a/modoboa/parameters/tools.py b/modoboa/parameters/tools.py index 8d3b1131f..383b17442 100644 --- a/modoboa/parameters/tools.py +++ b/modoboa/parameters/tools.py @@ -1,5 +1,7 @@ """Parameters management.""" +from __future__ import unicode_literals + import copy from modoboa.lib import exceptions diff --git a/modoboa/relaydomains/__init__.py b/modoboa/relaydomains/__init__.py index 0b2987e99..c9afa7d7b 100644 --- a/modoboa/relaydomains/__init__.py +++ b/modoboa/relaydomains/__init__.py @@ -1 +1,3 @@ +from __future__ import unicode_literals + default_app_config = "modoboa.relaydomains.apps.RelayDomainsConfig" diff --git a/modoboa/relaydomains/app_settings.py b/modoboa/relaydomains/app_settings.py index a6cf7fb4d..ac892234e 100644 --- a/modoboa/relaydomains/app_settings.py +++ b/modoboa/relaydomains/app_settings.py @@ -1,5 +1,7 @@ """Relay domains settings definition.""" +from __future__ import unicode_literals + from django import forms from django.utils.translation import ugettext_lazy diff --git a/modoboa/relaydomains/apps.py b/modoboa/relaydomains/apps.py index 34b229a03..937456f2b 100644 --- a/modoboa/relaydomains/apps.py +++ b/modoboa/relaydomains/apps.py @@ -1,5 +1,7 @@ """AppConfig for relaydomains.""" +from __future__ import unicode_literals + from django.apps import AppConfig from django.utils.translation import ugettext as _ diff --git a/modoboa/relaydomains/constants.py b/modoboa/relaydomains/constants.py index 951bfa1af..1e4b24230 100644 --- a/modoboa/relaydomains/constants.py +++ b/modoboa/relaydomains/constants.py @@ -1,5 +1,7 @@ """Relaydomains app constants.""" +from __future__ import unicode_literals + PERMISSIONS = { "Resellers": [ ("relaydomains", "relaydomain", "add_relaydomain"), diff --git a/modoboa/relaydomains/forms.py b/modoboa/relaydomains/forms.py index 1da259ebb..de872f917 100644 --- a/modoboa/relaydomains/forms.py +++ b/modoboa/relaydomains/forms.py @@ -1,5 +1,7 @@ """Postfix relay domains extension forms.""" +from __future__ import unicode_literals + from django import forms from django.core import validators from django.utils.translation import ugettext as _ diff --git a/modoboa/relaydomains/handlers.py b/modoboa/relaydomains/handlers.py index 87b8e36e3..2bdd168a9 100644 --- a/modoboa/relaydomains/handlers.py +++ b/modoboa/relaydomains/handlers.py @@ -1,5 +1,7 @@ """Django signal handlers for relaydomains.""" +from __future__ import unicode_literals + from django.conf import settings from django.db.models import signals from django.dispatch import receiver diff --git a/modoboa/relaydomains/lib.py b/modoboa/relaydomains/lib.py index eaa2295de..b32a710ca 100644 --- a/modoboa/relaydomains/lib.py +++ b/modoboa/relaydomains/lib.py @@ -1,5 +1,7 @@ """Internal library.""" +from __future__ import unicode_literals + from .models import RelayDomain diff --git a/modoboa/relaydomains/migrations/__init__.py b/modoboa/relaydomains/migrations/__init__.py index e69de29bb..baffc4882 100644 --- a/modoboa/relaydomains/migrations/__init__.py +++ b/modoboa/relaydomains/migrations/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/modoboa/relaydomains/models.py b/modoboa/relaydomains/models.py index 715e4ba3f..4347a2a13 100644 --- a/modoboa/relaydomains/models.py +++ b/modoboa/relaydomains/models.py @@ -1,5 +1,7 @@ """Relay domain related models.""" +from __future__ import unicode_literals + from django.db import models from django.db.models.manager import Manager from django.utils.translation import ugettext as _, ugettext_lazy diff --git a/modoboa/relaydomains/postfix_maps.py b/modoboa/relaydomains/postfix_maps.py index e91444e7f..fdb084a61 100644 --- a/modoboa/relaydomains/postfix_maps.py +++ b/modoboa/relaydomains/postfix_maps.py @@ -1,5 +1,7 @@ """Map file definitions for postfix.""" +from __future__ import unicode_literals + class RelayDomainsMap(object): diff --git a/modoboa/relaydomains/tests.py b/modoboa/relaydomains/tests.py index 672c5dda5..957a165c1 100644 --- a/modoboa/relaydomains/tests.py +++ b/modoboa/relaydomains/tests.py @@ -1,5 +1,7 @@ """relaydomains unit tests.""" +from __future__ import unicode_literals + import json from django.core.files.base import ContentFile diff --git a/modoboa/relaydomains/urls.py b/modoboa/relaydomains/urls.py index e8dcd2cbd..e71b7b830 100644 --- a/modoboa/relaydomains/urls.py +++ b/modoboa/relaydomains/urls.py @@ -1,5 +1,7 @@ """Relay domains urls.""" +from __future__ import unicode_literals + from django.conf.urls import url from . import views diff --git a/modoboa/relaydomains/views.py b/modoboa/relaydomains/views.py index 6e30d2ce9..d115dc90c 100644 --- a/modoboa/relaydomains/views.py +++ b/modoboa/relaydomains/views.py @@ -1,5 +1,7 @@ """Custom views.""" +from __future__ import unicode_literals + from django.contrib.auth.decorators import ( login_required, permission_required ) diff --git a/modoboa/test_settings.py b/modoboa/test_settings.py index 06c111971..ba67caaf9 100644 --- a/modoboa/test_settings.py +++ b/modoboa/test_settings.py @@ -1,4 +1,7 @@ # -*- coding: utf-8 -*- + +from __future__ import unicode_literals + import os # Database diff --git a/modoboa/urls.py b/modoboa/urls.py index 5d0d350f8..34635fea7 100644 --- a/modoboa/urls.py +++ b/modoboa/urls.py @@ -1,3 +1,7 @@ +from __future__ import unicode_literals + +from functools import reduce + from django.conf import settings from django.conf.urls import include, url from django.views.i18n import JavaScriptCatalog diff --git a/modoboa/urls_api.py b/modoboa/urls_api.py index 64d6aaa2f..ef93a9914 100644 --- a/modoboa/urls_api.py +++ b/modoboa/urls_api.py @@ -1,5 +1,7 @@ """External API urls.""" +from __future__ import unicode_literals + from django.conf.urls import include, url from modoboa.core.extensions import exts_pool diff --git a/test_project/manage.py b/test_project/manage.py index 0fc36a34c..7fae8c557 100755 --- a/test_project/manage.py +++ b/test_project/manage.py @@ -1,4 +1,7 @@ #!/usr/bin/env python + +from __future__ import unicode_literals + import os import sys diff --git a/test_project/test_project/__init__.py b/test_project/test_project/__init__.py index e69de29bb..baffc4882 100644 --- a/test_project/test_project/__init__.py +++ b/test_project/test_project/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/test_project/test_project/settings.py b/test_project/test_project/settings.py index d19515f9a..7493ab588 100644 --- a/test_project/test_project/settings.py +++ b/test_project/test_project/settings.py @@ -8,6 +8,8 @@ For the full list of settings and their values, see https://docs.djangoproject.com/en/1.6/ref/settings/ """ +from __future__ import unicode_literals + # Build paths inside the project like this: os.path.join(BASE_DIR, ...) import os from logging.handlers import SysLogHandler diff --git a/test_project/test_project/urls.py b/test_project/test_project/urls.py index 1a4d5cea7..1317f7c7b 100644 --- a/test_project/test_project/urls.py +++ b/test_project/test_project/urls.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + from django.conf.urls import include, url urlpatterns = [ diff --git a/test_project/test_project/wsgi.py b/test_project/test_project/wsgi.py index 5ce7da76a..e63b59d9e 100644 --- a/test_project/test_project/wsgi.py +++ b/test_project/test_project/wsgi.py @@ -7,6 +7,8 @@ For more information on this file, see https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/ """ +from __future__ import unicode_literals + import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test_project.settings")