sort imports using isort

pip install isort
isort -y
This commit is contained in:
Andrew Fyfe
2018-02-03 00:43:59 +00:00
parent 8a1d5736c9
commit 24a7ca6a9e
122 changed files with 280 additions and 461 deletions
-1
View File
@@ -7,4 +7,3 @@ from modoboa.core.commands import handle_command_line
if __name__ == "__main__":
handle_command_line()
+2 -1
View File
@@ -11,7 +11,8 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
import os
import sys
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
+1 -2
View File
@@ -4,8 +4,7 @@
from __future__ import unicode_literals
from pkg_resources import get_distribution, DistributionNotFound
from pkg_resources import DistributionNotFound, get_distribution
try:
__version__ = get_distribution(__name__).version
+2 -5
View File
@@ -3,19 +3,16 @@
from __future__ import unicode_literals
from django import http
from django.contrib.contenttypes.models import ContentType
from rest_framework import filters, status, viewsets
from rest_framework.decorators import detail_route, list_route
from rest_framework.exceptions import ParseError
from rest_framework.permissions import IsAuthenticated, DjangoModelPermissions
from rest_framework.permissions import DjangoModelPermissions, IsAuthenticated
from rest_framework.response import Response
from modoboa.core import models as core_models
from . import models
from . import serializers
from . import models, serializers
class DomainViewSet(viewsets.ModelViewSet):
+2 -3
View File
@@ -6,13 +6,12 @@ import os
from django import forms
from django.conf import settings
from django.utils.translation import ugettext as _, ugettext_lazy
from django.utils.encoding import force_text
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.lib.form_utils import YesNoField, SeparatorField
from modoboa.lib.form_utils import SeparatorField, YesNoField
from modoboa.lib.sysutils import exec_cmd
from modoboa.parameters import forms as param_forms
from . import constants
-1
View File
@@ -4,7 +4,6 @@ from __future__ import unicode_literals
from django.utils.translation import ugettext_lazy as _
DNSBL_PROVIDERS = [
"aspews.ext.sorbs.net",
"b.barracudacentral.org",
+6 -6
View File
@@ -1,16 +1,16 @@
from __future__ import unicode_literals
from .domain import (
DomainFormGeneral, DomainFormOptions, DomainForm, DomainWizard
)
from .account import (
AccountFormGeneral, AccountFormMail, AccountPermissionsForm,
AccountForm, AccountWizard
AccountForm, AccountFormGeneral, AccountFormMail, AccountPermissionsForm,
AccountWizard
)
from .alias import AliasForm
from .domain import (
DomainForm, DomainFormGeneral, DomainFormOptions, DomainWizard
)
from .export import ExportDataForm, ExportDomainsForm, ExportIdentitiesForm
from .forward import ForwardForm
from .import_ import ImportDataForm, ImportIdentitiesForm
from .export import ExportDataForm, ExportDomainsForm, ExportIdentitiesForm
__all__ = [
"DomainFormGeneral", "DomainFormOptions", "DomainForm",
+3 -8
View File
@@ -7,17 +7,15 @@ from functools import reduce
from django import forms
from django.conf import settings
from django.contrib.auth import password_validation
from django.http import QueryDict
from django.urls import reverse
from django.utils.translation import ugettext as _, ugettext_lazy
from django.contrib.auth import password_validation
from modoboa.core import signals as core_signals
from modoboa.core.models import User
from modoboa.lib import exceptions as lib_exceptions, fields as lib_fields
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib import exceptions as lib_exceptions
from modoboa.lib import fields as lib_fields
from modoboa.lib.form_utils import (
DynamicForm, TabForms, WizardForm, WizardStep
)
@@ -25,10 +23,7 @@ from modoboa.lib.permissions import get_account_roles
from modoboa.lib.validators import validate_utf8_email
from modoboa.lib.web_utils import render_to_json_response
from modoboa.parameters import tools as param_tools
from .. import lib
from .. import models
from .. import signals
from .. import lib, models, signals
class AccountFormGeneral(forms.ModelForm):
+3 -7
View File
@@ -9,14 +9,10 @@ from django.http import QueryDict
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.core import signals as core_signals
from modoboa.lib import exceptions as lib_exceptions
from modoboa.lib import exceptions as lib_exceptions, fields as lib_fields
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib import fields as lib_fields
from modoboa.lib.form_utils import (
DynamicForm
)
from ..models import Domain, Alias
from modoboa.lib.form_utils import DynamicForm
from ..models import Alias, Domain
class AliasForm(forms.ModelForm, DynamicForm):
+5 -11
View File
@@ -5,28 +5,22 @@ from __future__ import unicode_literals
from functools import reduce
from django import forms
from django.urls import reverse
from django.http import QueryDict
from django.utils.translation import ugettext as _, ugettext_lazy
from django.urls import reverse
from django.utils.encoding import force_text
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.core import signals as core_signals
from modoboa.core.models import User
from modoboa.lib.exceptions import Conflict
from modoboa.lib.fields import DomainNameField
from modoboa.lib.form_utils import (
YesNoField, WizardForm, WizardStep, DynamicForm, TabForms
DynamicForm, TabForms, WizardForm, WizardStep, YesNoField
)
from modoboa.lib.web_utils import render_to_json_response
from modoboa.parameters import tools as param_tools
from .. import constants
from .. import lib
from .. import signals
from ..models import (
Domain, DomainAlias, Mailbox, Alias
)
from .. import constants, lib, signals
from ..models import Alias, Domain, DomainAlias, Mailbox
class DomainFormGeneral(forms.ModelForm, DynamicForm):
+5 -13
View File
@@ -2,26 +2,18 @@
from __future__ import unicode_literals
from django.urls import reverse
from django.contrib.contenttypes.models import ContentType
from django.db.models import signals
from django.dispatch import receiver
from django.urls import reverse
from django.utils.translation import ugettext as _
from django.contrib.contenttypes.models import ContentType
from modoboa.core import models as core_models
from modoboa.core import signals as core_signals
from modoboa.core import models as core_models, signals as core_signals
from modoboa.lib import exceptions, permissions, signals as lib_signals
from modoboa.lib.cryptutils import encrypt
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib import exceptions
from modoboa.lib import permissions
from modoboa.lib import signals as lib_signals
from modoboa.parameters import tools as param_tools
from . import signals as admin_signals
from . import lib
from . import models
from . import postfix_maps
from . import lib, models, postfix_maps, signals as admin_signals
@receiver(signals.post_save, sender=models.Domain)
+5 -7
View File
@@ -4,30 +4,28 @@
from __future__ import unicode_literals
from functools import wraps
import ipaddress
from itertools import chain
import logging
import random
import socket
import string
from functools import wraps
from itertools import chain
from dns.name import IDNA_2008_UTS_46
import dns.resolver
from dns.name import IDNA_2008_UTS_46
from django.contrib.contenttypes.models import ContentType
from django.db.models import Q
from django.utils.encoding import smart_text
from django.utils.translation import ugettext as _
from modoboa.core.models import User
from modoboa.core import signals as core_signals
from modoboa.core.models import User
from modoboa.lib.exceptions import PermDeniedException
from modoboa.parameters import tools as param_tools
from .models import Domain, DomainAlias, Alias
from . import signals
from .models import Alias, Domain, DomainAlias
def needs_mailbox():
@@ -1,6 +1,6 @@
"""A management command to apply mailbox operations."""
from __future__ import unicode_literals, print_function
from __future__ import print_function, unicode_literals
import logging
import os
@@ -8,10 +8,9 @@ import shutil
from django.core.management.base import BaseCommand
from modoboa.parameters import tools as param_tools
from modoboa.lib.sysutils import exec_cmd
from modoboa.lib.exceptions import InternalError
from modoboa.lib.sysutils import exec_cmd
from modoboa.parameters import tools as param_tools
from ...app_settings import load_admin_settings
from ...models import MailboxOperation
+1 -1
View File
@@ -4,10 +4,10 @@ from __future__ import unicode_literals
from subcommand.base import SubcommandCommand
from .subcommands._mx import CheckMXRecords
from .subcommands._export import ExportCommand
from .subcommands._import import ImportCommand
from .subcommands._manage_dkim_keys import ManageDKIMKeys
from .subcommands._mx import CheckMXRecords
from .subcommands._repair import Repair
@@ -2,13 +2,14 @@
from __future__ import unicode_literals
from backports import csv
import sys
from backports import csv
from django.core.management.base import BaseCommand
from modoboa.core.models import User
from modoboa.core.extensions import exts_pool
from modoboa.core.models import User
from .... import models
@@ -2,18 +2,17 @@
from __future__ import unicode_literals
from backports import csv
import io
import os
import progressbar
from backports import csv
from django.core.management.base import BaseCommand, CommandError
from modoboa.core import models as core_models
from modoboa.core.extensions import exts_pool
from modoboa.lib.exceptions import Conflict
from .... import signals
@@ -9,7 +9,6 @@ from django.utils.encoding import smart_text
from modoboa.lib import sysutils
from modoboa.parameters import tools as param_tools
from .... import models
@@ -18,8 +18,7 @@ from django.utils.encoding import smart_text
from django.utils.functional import cached_property
from django.utils.translation import ugettext as _
from modoboa.admin import constants
from modoboa.admin import models
from modoboa.admin import constants, models
from modoboa.parameters import tools as param_tools
@@ -6,11 +6,9 @@ from django.conf import settings
from django.core.management.base import BaseCommand
from django.utils.encoding import smart_str
from modoboa.lib.permissions import grant_access_to_object
from modoboa.lib.permissions import get_object_owner
from modoboa.core.models import User
from modoboa.admin import models
from modoboa.core.models import User
from modoboa.lib.permissions import get_object_owner, grant_access_to_object
known_problems = []
+2 -2
View File
@@ -2,12 +2,12 @@
from __future__ import unicode_literals
from .alias import Alias, AliasRecipient
from .base import AdminObject
from .domain import Domain
from .domain_alias import DomainAlias
from .mailbox import Mailbox, Quota, MailboxOperation, SenderAddress
from .mailbox import Mailbox, MailboxOperation, Quota, SenderAddress
from .mxrecord import DNSBLResult, MXRecord
from .alias import Alias, AliasRecipient
__all__ = [
"AdminObject",
+6 -7
View File
@@ -5,25 +5,24 @@ from __future__ import unicode_literals
import hashlib
import random
from django.urls import reverse
from reversion import revisions as reversion
from django.db import models
from django.urls import reverse
from django.utils.encoding import (
python_2_unicode_compatible, smart_text, force_str, force_bytes
force_bytes, force_str, python_2_unicode_compatible, smart_text
)
from django.utils.translation import ugettext as _, ugettext_lazy
from reversion import revisions as reversion
from modoboa.core import signals as core_signals
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib.exceptions import (
PermDeniedException, BadRequest, Conflict, NotFound
BadRequest, Conflict, NotFound, PermDeniedException
)
from .. import signals
from .base import AdminObject
from .domain import Domain
from .mailbox import Mailbox
from .. import signals
@python_2_unicode_compatible
+1 -2
View File
@@ -2,11 +2,10 @@
from __future__ import unicode_literals
from django.contrib.contenttypes.fields import GenericRelation
from django.db import models
from django.utils import timezone
from django.contrib.contenttypes.fields import GenericRelation
from modoboa.core import models as core_models
from modoboa.lib.permissions import (
grant_access_to_object, ungrant_access_to_object
+4 -5
View File
@@ -4,23 +4,22 @@ from __future__ import unicode_literals
import datetime
from reversion import revisions as reversion
from django.db import models
from django.utils import timezone
from django.utils.encoding import (
python_2_unicode_compatible, smart_text, force_text
force_text, python_2_unicode_compatible, smart_text
)
from django.utils.functional import cached_property
from django.utils.translation import ugettext as _, ugettext_lazy
from reversion import revisions as reversion
from modoboa.core import signals as core_signals
from modoboa.core.models import User
from modoboa.lib.exceptions import BadRequest, Conflict
from modoboa.parameters import tools as param_tools
from .base import AdminObject
from .. import constants
from .base import AdminObject
@python_2_unicode_compatible
+4 -7
View File
@@ -2,18 +2,15 @@
from __future__ import unicode_literals
from reversion import revisions as reversion
from django.contrib.contenttypes.fields import GenericRelation
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.fields import GenericRelation
from reversion import revisions as reversion
from modoboa.core import models as core_models
from modoboa.core import signals as core_signals
from modoboa.core import models as core_models, signals as core_signals
from modoboa.lib.exceptions import BadRequest, Conflict
from .base import AdminObject
from .domain import Domain
+2 -3
View File
@@ -5,6 +5,8 @@ from __future__ import unicode_literals
import os
import pwd
from reversion import revisions as reversion
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.db.models import Q
@@ -12,14 +14,11 @@ 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
from reversion import revisions as reversion
from modoboa.core.models import User
from modoboa.lib import exceptions as lib_exceptions
from modoboa.lib.email_utils import split_mailbox
from modoboa.lib.sysutils import exec_cmd
from modoboa.parameters import tools as param_tools
from .base import AdminObject
from .domain import Domain
+10 -11
View File
@@ -3,25 +3,24 @@
from __future__ import unicode_literals
from django.conf import settings
from django.contrib.auth import password_validation
from django.core.exceptions import ValidationError
from django.shortcuts import get_object_or_404
from django.utils.translation import ugettext as _, ugettext_lazy
from django.utils.encoding import force_text
from django.contrib.auth import password_validation
from django.utils.translation import ugettext as _, ugettext_lazy
from rest_framework import serializers
from modoboa.admin import models as admin_models
from modoboa.core import constants as core_constants
from modoboa.core import models as core_models
from modoboa.core import signals as core_signals
from modoboa.lib import exceptions as lib_exceptions
from modoboa.lib import permissions, email_utils, fields as lib_fields
from modoboa.core import (
constants as core_constants, models as core_models, signals as core_signals
)
from modoboa.lib import (
email_utils, exceptions as lib_exceptions, fields as lib_fields,
permissions
)
from modoboa.parameters import tools as param_tools
from . import lib
from . import models
from . import lib, models
class DomainSerializer(serializers.ModelSerializer):
+1 -2
View File
@@ -5,15 +5,14 @@ from __future__ import unicode_literals
from functools import reduce
from django import template
from django.urls import reverse
from django.template.loader import render_to_string
from django.urls import reverse
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.core import signals as core_signals
from modoboa.lib.templatetags.lib_tags import render_link
from modoboa.lib.web_utils import render_actions
from .. import signals
register = template.Library()
+4 -7
View File
@@ -4,18 +4,15 @@ from __future__ import unicode_literals
from unittest import skipIf
from django.urls import reverse
from django.test import override_settings
from django.urls import reverse
from modoboa.core import factories as core_factories
from modoboa.core.tests import test_ldap
from modoboa.core.models import User
from modoboa.lib.tests import ModoTestCase
from modoboa.lib.tests import NO_LDAP
from modoboa.core.tests import test_ldap
from modoboa.lib.tests import NO_LDAP, ModoTestCase
from modoboa.limits import utils as limits_utils
from .. import factories
from .. import models
from .. import factories, models
class AuthenticationTestCase(ModoTestCase):
+5 -3
View File
@@ -2,16 +2,18 @@
from __future__ import unicode_literals
"""Admin test cases."""
from django.urls import reverse
from modoboa.core.models import User
from modoboa.lib.tests import ModoTestCase
from .. import factories
from ..models import Alias, AliasRecipient, Domain
"""Admin test cases."""
class AliasTestCase(ModoTestCase):
+2 -5
View File
@@ -16,13 +16,10 @@ from django.urls import reverse
from rest_framework.authtoken.models import Token
from modoboa.admin import models as admin_models
from modoboa.core import factories as core_factories
from modoboa.core import models as core_models
from modoboa.core import factories as core_factories, models as core_models
from modoboa.lib.tests import ModoAPITestCase
from . import utils
from .. import factories
from .. import models
from .. import factories, models
class DomainAPITestCase(ModoAPITestCase):
+1 -2
View File
@@ -20,10 +20,9 @@ from modoboa.core import factories as core_factories
from modoboa.core.models import User
from modoboa.core.tests.test_views import SETTINGS_SAMPLE
from modoboa.lib.tests import ModoTestCase
from . import utils
from .. import factories
from ..models import Domain, Alias
from ..models import Alias, Domain
class DomainTestCase(ModoTestCase):
+1 -2
View File
@@ -5,9 +5,8 @@ from __future__ import unicode_literals
from django.urls import reverse
from modoboa.lib.tests import ModoTestCase
from .. import factories
from ..models import Domain, DomainAlias, Alias
from ..models import Alias, Domain, DomainAlias
class DomainAliasTestCase(ModoTestCase):
+1 -3
View File
@@ -8,9 +8,7 @@ from django.urls import reverse
from django.utils.encoding import force_text
from modoboa.lib.tests import ModoTestCase
from .. import factories
from .. import models
from .. import factories, models
class ExportTestCase(ModoTestCase):
+1 -2
View File
@@ -11,10 +11,9 @@ from django.urls import reverse
from modoboa.core import factories as core_factories
from modoboa.core.models import User
from modoboa.lib.tests import ModoTestCase
from . import utils
from .. import factories
from ..models import Domain, Alias, DomainAlias
from ..models import Alias, Domain, DomainAlias
class ImportTestCase(ModoTestCase):
@@ -9,13 +9,11 @@ import tempfile
import mock
from django.core.management import call_command
from django.urls import reverse
from django.test import override_settings
from django.urls import reverse
from modoboa.lib.tests import ModoTestCase
from .. import factories
from .. import models
from .. import factories, models
@override_settings(
+2 -5
View File
@@ -8,19 +8,16 @@ import dns.resolver
from mock import patch
from testfixtures import LogCapture
from django.core import mail
from django.core import management
from django.core import mail, management
from django.test import override_settings
from django.urls import reverse
from django.utils.translation import ugettext as _
from modoboa.core import factories as core_factories
from modoboa.lib.tests import ModoTestCase
from . import utils
from .. import factories
from .. import factories, models
from ..lib import get_domain_mx_list
from .. import models
class MXTestCase(ModoTestCase):
@@ -4,7 +4,6 @@ from django.urls import reverse
from modoboa.core.models import User
from modoboa.lib.tests import ModoTestCase
from .. import factories
+2 -5
View File
@@ -4,12 +4,9 @@ from __future__ import unicode_literals
from django.core import management
from modoboa.lib.permissions import get_object_owner
from modoboa.lib.permissions import ObjectAccess
from modoboa.lib.permissions import ObjectAccess, get_object_owner
from modoboa.lib.tests import ModoTestCase
from .. import factories
from .. import models
from .. import factories, models
class RepairTestCase(ModoTestCase):
-1
View File
@@ -6,7 +6,6 @@ from django.urls import reverse
from modoboa.core.models import User
from modoboa.lib.tests import ModoTestCase
from ..factories import populate_database
from ..models import Alias
+1 -1
View File
@@ -8,7 +8,7 @@ import socket
from dns.name import Name
from dns.rdtypes.ANY.MX import MX
from dns.resolver import NoAnswer, NoNameservers, NXDOMAIN, Timeout
from dns.resolver import NXDOMAIN, NoAnswer, NoNameservers, Timeout
_MX_RECORD_1 = MX("IN", "MX", 10, Name("mx.example.com".split(".")))
_MX_RECORD_2 = MX("IN", "MX", 10, Name("mx2.example.com".split(".")))
+4 -6
View File
@@ -6,12 +6,10 @@ from __future__ import unicode_literals
from django.conf.urls import url
from . import views
from .views import import_ as import_views
from .views import alias as alias_views
from .views import domain as domain_views
from .views import export as export_views
from .views import identity as identity_views
from .views import (
alias as alias_views, domain as domain_views, export as export_views,
identity as identity_views, import_ as import_views
)
urlpatterns = [
url(r'^$', domain_views.index, name="index"),
-1
View File
@@ -6,7 +6,6 @@ from rest_framework import routers
from . import api
router = routers.SimpleRouter()
router.register(r"domains", api.DomainViewSet, base_name="domain")
router.register(
+1 -2
View File
@@ -3,10 +3,9 @@
from __future__ import unicode_literals
from .alias import AliasDetailView
from .identity import AccountDetailView
from .dns import DNSBLDomainDetailView, MXDomainDetailView
from .domain import DomainDetailView
from .identity import AccountDetailView
__all__ = [
"AccountDetailView",
+6 -10
View File
@@ -2,23 +2,19 @@
from __future__ import unicode_literals
from django.urls import reverse
from reversion import revisions as reversion
from django.contrib.auth import mixins as auth_mixins
from django.contrib.auth.decorators import login_required, permission_required
from django.db import IntegrityError
from django.shortcuts import render
from django.urls import reverse
from django.utils.translation import ugettext as _, ungettext
from django.views import generic
from django.contrib.auth import mixins as auth_mixins
from django.contrib.auth.decorators import (
login_required, permission_required
)
from reversion import revisions as reversion
from modoboa.core import signals as core_signals
from modoboa.lib.exceptions import PermDeniedException, Conflict
from modoboa.lib.exceptions import Conflict, PermDeniedException
from modoboa.lib.web_utils import render_to_json_response
from ..forms import AliasForm
from ..models import Alias
+2 -4
View File
@@ -2,11 +2,9 @@
from __future__ import unicode_literals
from django.views import generic
from django.utils.translation import ugettext as _
from django.contrib.auth import mixins as auth_mixins
from django.utils.translation import ugettext as _
from django.views import generic
from .. import models
+12 -14
View File
@@ -4,31 +4,29 @@ from __future__ import unicode_literals
from functools import reduce
from django.urls import reverse
from django.db.models import Sum
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.template.loader import render_to_string
from django.utils.translation import ugettext as _, ungettext
from django.views import generic
from django.views.decorators.csrf import ensure_csrf_cookie
from reversion import revisions as reversion
from django.contrib.auth import mixins as auth_mixins
from django.contrib.auth.decorators import (
login_required, permission_required, user_passes_test
)
from reversion import revisions as reversion
from django.db.models import Sum
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.template.loader import render_to_string
from django.urls import reverse
from django.utils.translation import ugettext as _, ungettext
from django.views import generic
from django.views.decorators.csrf import ensure_csrf_cookie
from modoboa.core import signals as core_signals
from modoboa.lib.web_utils import render_to_json_response
from modoboa.lib.exceptions import PermDeniedException
from modoboa.lib.listing import get_sort_order, get_listing_page
from modoboa.lib.listing import get_listing_page, get_sort_order
from modoboa.lib.web_utils import render_to_json_response
from .. import signals
from ..forms import DomainForm, DomainWizard
from ..lib import get_domains
from ..models import Domain, Mailbox
from .. import signals
@login_required
+3 -4
View File
@@ -3,19 +3,18 @@
from __future__ import unicode_literals
from backports import csv
from rfc6266 import build_header
from django.contrib.auth.decorators import (
login_required, permission_required, user_passes_test
)
from django.urls import reverse
from django.http import HttpResponse
from django.shortcuts import render
from django.utils.translation import ugettext as _
from django.urls import reverse
from django.utils import six
from django.utils.translation import ugettext as _
from ..forms import ExportIdentitiesForm, ExportDomainsForm
from ..forms import ExportDomainsForm, ExportIdentitiesForm
from ..lib import get_domains, get_identities
+10 -16
View File
@@ -2,32 +2,26 @@
from __future__ import unicode_literals
from reversion import revisions as reversion
from django.contrib.auth import mixins as auth_mixins
from django.contrib.auth.decorators import (
login_required, permission_required, user_passes_test
)
from django.shortcuts import render
from django.template.loader import render_to_string
from django.utils.translation import ugettext as _, ungettext
from django.views import generic
from django.views.decorators.csrf import ensure_csrf_cookie
from django.contrib.auth import mixins as auth_mixins
from django.contrib.auth.decorators import (
login_required, permission_required, user_passes_test
)
from reversion import revisions as reversion
from modoboa.core.models import User
from modoboa.lib.exceptions import (
PermDeniedException, BadRequest
)
from modoboa.lib.listing import (
get_sort_order, get_listing_page
)
from modoboa.lib.exceptions import BadRequest, PermDeniedException
from modoboa.lib.listing import get_listing_page, get_sort_order
from modoboa.lib.web_utils import render_to_json_response
from .. import signals
from ..forms import AccountForm, AccountWizard
from ..lib import get_identities
from ..models import Mailbox, Domain
from .. import signals
from ..models import Domain, Mailbox
@login_required
+6 -8
View File
@@ -2,25 +2,23 @@
from __future__ import unicode_literals
from backports import csv
import io
from backports import csv
from reversion import revisions as reversion
from django.contrib.auth.decorators import (
login_required, permission_required, user_passes_test
)
from django.urls import reverse
from django.db import transaction
from django.shortcuts import render
from django.urls import reverse
from django.utils.encoding import smart_text
from django.utils.translation import ugettext as _
from reversion import revisions as reversion
from modoboa.lib.exceptions import ModoboaException, Conflict
from ..forms import ImportIdentitiesForm, ImportDataForm
from modoboa.lib.exceptions import Conflict, ModoboaException
from .. import signals
from ..forms import ImportDataForm, ImportIdentitiesForm
@reversion.create_revision()
+3 -5
View File
@@ -2,15 +2,13 @@
from __future__ import unicode_literals
from reversion import revisions as reversion
from django.contrib.auth.decorators import login_required
from django.template.loader import render_to_string
from django.utils.translation import ugettext as _
from django.contrib.auth.decorators import login_required
from reversion import revisions as reversion
from modoboa.lib.web_utils import render_to_json_response
from ..forms import ForwardForm
from ..lib import needs_mailbox
from ..models import Alias
+3 -6
View File
@@ -4,18 +4,15 @@ from __future__ import unicode_literals
from django import forms
from django.conf import settings
from django.utils.translation import ugettext as _, ugettext_lazy
from django.contrib.auth import password_validation
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.lib import fields as lib_fields
from modoboa.lib.cryptutils import random_key
from modoboa.lib.form_utils import (
YesNoField, SeparatorField, HorizontalRadioSelect
HorizontalRadioSelect, SeparatorField, YesNoField
)
from modoboa.parameters import forms as param_forms
from modoboa.parameters import tools as param_tools
from modoboa.parameters import forms as param_forms, tools as param_tools
from . import constants
-1
View File
@@ -6,7 +6,6 @@ from django.conf import settings
from django.core.checks import Warning, register
from django.utils.translation import ugettext as _
W001 = Warning(
_("You have USE_TZ set to False, this may result in issues during "
"transitions between summer/winter time (ie the same local time occuring "
+1 -1
View File
@@ -1,6 +1,6 @@
# coding: utf-8
from __future__ import unicode_literals, print_function
from __future__ import print_function, unicode_literals
import argparse
import os
+11 -9
View File
@@ -2,7 +2,7 @@
"""A shortcut to deploy a fresh modoboa instance."""
from __future__ import unicode_literals, print_function
from __future__ import print_function, unicode_literals
import codecs
import getpass
@@ -10,23 +10,25 @@ import os
import shutil
import subprocess
import sys
from os.path import isfile
import dj_database_url
import django
from django.core import management
from django.template import Context, Template
from django.utils.encoding import smart_str
from modoboa.core.commands import Command
from modoboa.lib.api_client import ModoAPIClient
try:
import pip
except ImportError:
sys.stderr.write("Error: pip is required to install extensions.\n")
sys.exit(2)
import django
from django.core import management
from django.template import Context, Template
from django.utils.encoding import smart_str
import dj_database_url
from modoboa.core.commands import Command
from modoboa.lib.api_client import ModoAPIClient
if sys.version_info < (3, 0, 0):
input = raw_input
+1 -1
View File
@@ -1,6 +1,6 @@
# coding: utf-8
from __future__ import unicode_literals, print_function
from __future__ import print_function, unicode_literals
import sys
+3 -5
View File
@@ -5,14 +5,12 @@
from __future__ import unicode_literals
from django import forms
from django.contrib.auth import (
forms as auth_forms, get_user_model, password_validation
)
from django.db.models import Q
from django.utils.translation import ugettext as _, ugettext_lazy
from django.contrib.auth import forms as auth_forms
from django.contrib.auth import get_user_model
from django.contrib.auth import password_validation
from modoboa.core.models import User
from modoboa.parameters import tools as param_tools
+6 -11
View File
@@ -4,24 +4,19 @@ from __future__ import unicode_literals
import logging
from reversion import revisions as reversion
from reversion.models import Version
from django.contrib.sites import models as sites_models
from django.db.models import signals
from django.dispatch import receiver
from django.urls import reverse
from django.utils.encoding import smart_text
from django.utils.translation import ugettext as _
from django.contrib.sites import models as sites_models
from reversion import revisions as reversion
from reversion.models import Version
from modoboa.lib import exceptions
from modoboa.lib import permissions
from modoboa.lib import exceptions, permissions
from modoboa.lib.signals import get_request
from . import models
from . import signals as core_signals
from . import utils
from . import models, signals as core_signals, utils
@receiver(reversion.post_revision_commit)
@@ -9,7 +9,6 @@ from django.core.management.base import BaseCommand
from django.utils import timezone
from modoboa.parameters import tools as param_tools
from ... import models
@@ -7,7 +7,6 @@ from django.core.management.base import BaseCommand, CommandError
from modoboa.admin import models as admin_models
from modoboa.core.extensions import exts_pool
from modoboa.lib import api_client
from ... import models
@@ -6,16 +6,15 @@ import hashlib
import os
import sys
import dj_database_url
from django.conf import settings
from django.core.management.base import BaseCommand
from django.template import Context, Template
from django.utils import timezone
from django.utils.encoding import force_bytes
import dj_database_url
from ... import signals
from ... import utils
from ... import signals, utils
MAP_FILE_TEMPLATE = """# This file was generated on {{ date }} by running:
# {{ commandline }}
@@ -14,11 +14,7 @@ from django.core.management.base import BaseCommand
from modoboa.lib.cryptutils import random_key
from modoboa.lib.permissions import add_permissions_to_group
from ... import constants
from ... import extensions
from ... import models
from ... import signals
from ... import constants, extensions, models, signals
class Command(BaseCommand):
@@ -7,9 +7,8 @@ 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
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
-1
View File
@@ -4,7 +4,6 @@ from __future__ import unicode_literals
import httmock
# Modoboa API mocks
@httmock.urlmatch(
+15 -19
View File
@@ -2,34 +2,30 @@
from __future__ import unicode_literals
from email.header import Header
import re
from django.conf import settings
from django.db import models
from django.urls import reverse
from django.utils.encoding import (
python_2_unicode_compatible, smart_bytes, smart_text, force_str
)
from django.utils.functional import cached_property
from django.utils.translation import ugettext as _, ugettext_lazy
from django.contrib.auth.models import Group, AbstractUser
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from email.header import Header
import jsonfield
from reversion import revisions as reversion
from django.conf import settings
from django.contrib.auth.models import AbstractUser, Group
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.urls import reverse
from django.utils.encoding import (
force_str, python_2_unicode_compatible, smart_bytes, smart_text
)
from django.utils.functional import cached_property
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.core.password_hashers import get_password_hasher
from modoboa.lib.exceptions import (
PermDeniedException, InternalError, BadRequest, Conflict
BadRequest, Conflict, InternalError, PermDeniedException
)
from modoboa.parameters import tools as param_tools
from . import constants
from . import signals
from . import constants, signals
try:
from modoboa.lib.ldap_utils import LDAPAuthBackend
+3 -3
View File
@@ -4,12 +4,12 @@ Password hashers for Modoboa.
from __future__ import unicode_literals
from modoboa.core.password_hashers.base import (
PLAINHasher, CRYPTHasher, MD5Hasher, SHA256Hasher
)
from modoboa.core.password_hashers.advanced import (
BLFCRYPTHasher, MD5CRYPTHasher, SHA256CRYPTHasher, SHA512CRYPTHasher
)
from modoboa.core.password_hashers.base import (
CRYPTHasher, MD5Hasher, PLAINHasher, SHA256Hasher
)
def get_password_hasher(scheme):
@@ -9,7 +9,6 @@ from __future__ import unicode_literals
from passlib.hash import bcrypt, md5_crypt, sha256_crypt, sha512_crypt
from modoboa.parameters import tools as param_tools
from .base import PasswordHasher
+2 -2
View File
@@ -9,11 +9,11 @@ from __future__ import unicode_literals
import base64
import crypt
import hashlib
from random import Random
import string
from random import Random
from django.utils.crypto import constant_time_compare
from django.utils.encoding import force_text, force_bytes
from django.utils.encoding import force_bytes, force_text
class PasswordHasher(object):
+5 -5
View File
@@ -3,22 +3,22 @@
from __future__ import unicode_literals
from functools import reduce
import os
import pkg_resources
import re
from functools import reduce
import pkg_resources
from django import template
from django.conf import settings
from django.urls import reverse
from django.contrib.sessions.models import Session
from django.template.loader import render_to_string
from django.urls import reverse
from django.utils import timezone
from django.utils.encoding import smart_text
from django.utils.safestring import mark_safe
from django.utils.translation import get_language, ugettext as _
from django.contrib.sessions.models import Session
from .. import signals
register = template.Library()
+4 -7
View File
@@ -5,19 +5,16 @@
from __future__ import unicode_literals
import smtplib
from unittest import skipIf
from mock import patch
from django.core import mail
from django.urls import reverse
from django.test import override_settings
from django.urls import reverse
from modoboa.lib.tests import ModoTestCase
from modoboa.lib.tests import NO_SMTP
from .. import factories
from .. import models
from modoboa.lib.tests import NO_SMTP, ModoTestCase
from .. import factories, models
class AuthenticationTestCase(ModoTestCase):
+2 -6
View File
@@ -3,20 +3,16 @@
from __future__ import unicode_literals
import httmock
from dateutil.relativedelta import relativedelta
from six import StringIO
from django.core import management
from django.urls import reverse
from django.test import TestCase
from django.urls import reverse
from django.utils import timezone
from modoboa.lib.tests import ModoTestCase
from .. import factories
from .. import mocks
from .. import models
from .. import factories, mocks, models
class AuthenticationTestCase(ModoTestCase):
+3 -6
View File
@@ -4,16 +4,13 @@ from __future__ import unicode_literals
from unittest import skipIf
from django.urls import reverse
from django.test import override_settings
from django.urls import reverse
from django.utils.functional import cached_property
from modoboa.lib import exceptions
from modoboa.lib.tests import ModoTestCase
from modoboa.lib.tests import NO_LDAP
from .. import factories
from .. import models
from modoboa.lib.tests import NO_LDAP, ModoTestCase
from .. import factories, models
@skipIf(NO_LDAP, "No ldap module installed")
+2 -6
View File
@@ -8,12 +8,8 @@ from django import forms
from django.urls import reverse
from modoboa.lib.tests import ModoTestCase
from modoboa.parameters import forms as param_forms
from modoboa.parameters import tools as param_tools
from .. import factories
from .. import models
from .. import signals
from modoboa.parameters import forms as param_forms, tools as param_tools
from .. import factories, models, signals
SETTINGS_SAMPLE = {
"core-check_new_versions": "True",
-1
View File
@@ -8,7 +8,6 @@ from django.utils.translation import ugettext as _
from modoboa.core.extensions import exts_pool
from modoboa.lib.api_client import ModoAPIClient
from . import models
+2 -1
View File
@@ -4,7 +4,8 @@ from __future__ import unicode_literals
from .admin import (
check_top_notifications, information, logs, logs_page, parameters,
viewsettings)
viewsettings
)
from .auth import dologin, dologout, password_reset
from .base import RootDispatchView
from .dashboard import DashboardView
+2 -5
View File
@@ -4,19 +4,16 @@ from __future__ import unicode_literals
from functools import reduce
from django.contrib.auth.decorators import (
login_required, user_passes_test
)
from django.contrib.auth.decorators import login_required, user_passes_test
from django.shortcuts import render
from django.template.loader import render_to_string
from django.utils.translation import ugettext as _
from modoboa.core.models import Log
from modoboa.core.utils import check_for_updates
from modoboa.lib.listing import get_sort_order, get_listing_page
from modoboa.lib.listing import get_listing_page, get_sort_order
from modoboa.lib.web_utils import render_to_json_response
from modoboa.parameters import tools as param_tools
from .. import signals
+5 -6
View File
@@ -5,20 +5,19 @@ from __future__ import unicode_literals
import logging
from django.urls import reverse
from django.contrib.auth import (
authenticate, login, logout, views as auth_views
)
from django.http import HttpResponse, HttpResponseRedirect
from django.template.loader import render_to_string
from django.urls import reverse
from django.utils import translation
from django.utils.translation import ugettext as _
from django.views.decorators.cache import never_cache
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth import views as auth_views
from modoboa.core import forms
from .base import find_nextlocation
from .. import signals
from .base import find_nextlocation
logger = logging.getLogger("modoboa.auth")
+1 -2
View File
@@ -2,12 +2,11 @@
from __future__ import unicode_literals
from django.contrib.auth import mixins as auth_mixins
from django.urls import reverse
from django.utils.http import is_safe_url
from django.views import generic
from django.contrib.auth import mixins as auth_mixins
from ..extensions import exts_pool
+2 -3
View File
@@ -2,14 +2,13 @@
from __future__ import unicode_literals
from dateutil import parser
import feedparser
import requests
from dateutil import parser
from requests.exceptions import RequestException
from django.views import generic
from django.contrib.auth import mixins as auth_mixins
from django.views import generic
from .. import signals
+3 -5
View File
@@ -2,22 +2,20 @@
from __future__ import unicode_literals
from django.contrib.auth.decorators import login_required, user_passes_test
from django.shortcuts import render
from django.template.loader import render_to_string
from django.utils import translation
from django.utils.translation import ugettext as _
from django.utils.encoding import force_text
from django.contrib.auth.decorators import login_required, user_passes_test
from django.utils.translation import ugettext as _
from rest_framework.authtoken.models import Token
from modoboa.lib.cryptutils import encrypt
from modoboa.lib.web_utils import render_to_json_response
from modoboa.parameters import tools as param_tools
from ..forms import ProfileForm, APIAccessForm
from .. import signals
from ..forms import APIAccessForm, ProfileForm
@login_required
+1 -1
View File
@@ -3,8 +3,8 @@
from __future__ import unicode_literals
import os
import pkg_resources
import pkg_resources
import requests
from requests.exceptions import RequestException
+1 -1
View File
@@ -6,7 +6,7 @@ import smtplib
from django.conf import settings
from modoboa.core.models import populate_callback, User
from modoboa.core.models import User, populate_callback
from modoboa.lib.email_utils import split_mailbox
from modoboa.parameters import tools as param_tools
+2 -2
View File
@@ -6,12 +6,12 @@ from __future__ import unicode_literals
import base64
from cryptography.fernet import Fernet
from django.conf import settings
from django.utils.crypto import get_random_string
from django.utils.encoding import smart_bytes, smart_text
from cryptography.fernet import Fernet
def random_key(length=16):
"""Generate a new key used to encrypt user passwords in session storage."""
+3 -4
View File
@@ -3,12 +3,12 @@
from __future__ import unicode_literals
import email
from email.header import Header
from email.mime.text import MIMEText
from email.utils import make_msgid, formataddr, formatdate, getaddresses
import re
import smtplib
import time
from email.header import Header
from email.mime.text import MIMEText
from email.utils import formataddr, formatdate, getaddresses, make_msgid
import chardet
import lxml.html
@@ -23,7 +23,6 @@ from django.utils.translation import ugettext as _
from modoboa.lib import u2u_decode
from modoboa.lib.exceptions import InternalError
# used by Email()
_RE_REMOVE_EXTRA_WHITESPACE = re.compile(r"\n\s*\n")
_RE_CID = re.compile(r".*[ ]*cid=\"([^\"]*)\".*", re.I)
+1 -2
View File
@@ -5,8 +5,8 @@
from __future__ import unicode_literals
import abc
from collections import OrderedDict
import re
from collections import OrderedDict
from django.forms import TypedChoiceField
from django.forms.fields import Field
@@ -18,7 +18,6 @@ from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.lib.exceptions import BadRequest
from modoboa.lib.web_utils import render_to_json_response
ABC = abc.ABCMeta(force_str("ABC"), (object,), {})
+2 -2
View File
@@ -38,9 +38,9 @@ from __future__ import unicode_literals
import ldap
from django.conf import settings
from django.utils.translation import ugettext as _
from django.utils.encoding import force_bytes
from django.utils import six
from django.utils.encoding import force_bytes
from django.utils.translation import ugettext as _
from modoboa.core.password_hashers import get_password_hasher
from modoboa.lib.exceptions import InternalError
+1 -1
View File
@@ -1,6 +1,6 @@
from __future__ import unicode_literals
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from modoboa.parameters import tools as param_tools
+2 -2
View File
@@ -5,11 +5,11 @@
from __future__ import unicode_literals
from django.http import HttpResponseRedirect
from django.utils.encoding import smart_text
from django.utils.deprecation import MiddlewareMixin
from django.utils.encoding import smart_text
from modoboa.lib.exceptions import ModoboaException
from modoboa.lib import signals as lib_signals
from modoboa.lib.exceptions import ModoboaException
from modoboa.lib.web_utils import (
_render_error, ajax_response, render_to_json_response
)
+1 -2
View File
@@ -6,8 +6,7 @@ from __future__ import unicode_literals
from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
from modoboa.core import constants as core_constants
from modoboa.core import signals as core_signals
from modoboa.core import constants as core_constants, signals as core_signals
from modoboa.core.models import ObjectAccess, User
+1
View File
@@ -1,5 +1,6 @@
from __future__ import unicode_literals
# works in Python 2 & 3
class _Singleton(type):
_instances = {}
+1 -1
View File
@@ -7,9 +7,9 @@ This module extra functions/shortcuts to communicate with the system
from __future__ import unicode_literals
import subprocess
import inspect
import re
import subprocess
def exec_cmd(cmd, sudo_user=None, pinput=None, capture_output=True, **kwargs):
+2 -3
View File
@@ -4,11 +4,10 @@ Form rendering tags.
from __future__ import unicode_literals
from django import forms
from django import template
from django import forms, template
from django.template.loader import render_to_string
from django.utils.encoding import smart_text
from django.utils.safestring import mark_safe
from django.template.loader import render_to_string
from modoboa.lib.form_utils import SeparatorField
+1 -1
View File
@@ -6,7 +6,7 @@ from __future__ import unicode_literals
from datetime import datetime
from django import template
from django.template import Template, Context
from django.template import Context, Template
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _
-1
View File
@@ -13,7 +13,6 @@ from rest_framework.authtoken.models import Token
from rest_framework.test import APITestCase
from modoboa.core import models as core_models
from .. import sysutils
try:
+2 -1
View File
@@ -10,7 +10,8 @@ from django.test import SimpleTestCase
from django.utils.encoding import smart_bytes, smart_text
from ..email_utils import (
Email, prepare_addresses, split_address, split_local_part)
Email, prepare_addresses, split_address, split_local_part
)
SAMPLES_DIR = os.path.realpath(
os.path.join(os.path.dirname(__file__), "sample_messages"))
+1 -1
View File
@@ -9,9 +9,9 @@ A stupid (and not accurate) answer to https://bugs.python.org/issue1079.
from __future__ import unicode_literals
import re
from email.header import decode_header, make_header
from email.utils import parseaddr
import re
from django.utils.encoding import smart_text
-1
View File
@@ -6,7 +6,6 @@ import collections
from django.utils.translation import ugettext_lazy as _
DEFAULT_USER_LIMITS = collections.OrderedDict((
("domains", {
"content_type": "admin.domain", "label": _("Domains"),
+1 -2
View File
@@ -8,9 +8,8 @@ from django import forms
from django.utils.translation import ugettext as _
from modoboa.lib.permissions import get_object_owner
from .lib import allocate_resources_from_user
from . import utils
from .lib import allocate_resources_from_user
class ResourcePoolForm(forms.Form):
+5 -13
View File
@@ -2,25 +2,17 @@
from __future__ import unicode_literals
from django.contrib.contenttypes.models import ContentType
from django.db.models import signals
from django.dispatch import receiver
from django.template.loader import render_to_string
from django.contrib.contenttypes.models import ContentType
from django.utils.translation import ugettext as _
from modoboa.admin import models as admin_models
from modoboa.admin import signals as admin_signals
from modoboa.core import models as core_models
from modoboa.core import signals as core_signals
from modoboa.lib import signals as lib_signals
from modoboa.lib import permissions
from modoboa.admin import models as admin_models, signals as admin_signals
from modoboa.core import models as core_models, signals as core_signals
from modoboa.lib import permissions, signals as lib_signals
from modoboa.parameters import tools as param_tools
from . import forms
from . import lib
from . import models
from . import utils
from . import forms, lib, models, utils
@receiver(core_signals.can_create_object)
+1 -3
View File
@@ -11,9 +11,7 @@ from django.utils.functional import cached_property
from django.utils.translation import ugettext as _
from modoboa.core import models as core_models
from . import lib
from . import utils
from . import lib, utils
class ObjectLimitMixin(object):
+1 -3
View File
@@ -13,9 +13,7 @@ from modoboa.admin.factories import populate_database
from modoboa.admin.models import Domain
from modoboa.core import factories as core_factories
from modoboa.core.models import User
from modoboa.lib import permissions
from modoboa.lib import tests as lib_tests
from modoboa.lib import permissions, tests as lib_tests
from .. import utils

Some files were not shown because too many files have changed in this diff Show More