Skip to content

Commit

Permalink
Merge pull request #788 from tonioo/django18
Browse files Browse the repository at this point in the history
Django18
  • Loading branch information
tonioo committed Nov 16, 2015
2 parents f70d15b + ad5c576 commit 7446bdb
Show file tree
Hide file tree
Showing 28 changed files with 148 additions and 120 deletions.
2 changes: 1 addition & 1 deletion modoboa/admin/forms/forward.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def get_recipients(self):
recipients = []
rawdata = self.cleaned_data["dest"].strip()
if not rawdata:
return
return recipients
for rcpt in rawdata.split(","):
local_part, domname = split_mailbox(rcpt)
if not local_part or not domname:
Expand Down
3 changes: 1 addition & 2 deletions modoboa/admin/management/commands/export_domains.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@

from modoboa.core import load_core_settings
from modoboa.core.extensions import exts_pool
from modoboa.core.management.commands import CloseConnectionMixin
from ...models import Domain


class Command(BaseCommand, CloseConnectionMixin):
class Command(BaseCommand):
help = 'Export domains and domain aliases to a csv'

option_list = BaseCommand.option_list + (
Expand Down
3 changes: 1 addition & 2 deletions modoboa/admin/management/commands/export_identities.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,10 @@
from modoboa.core import load_core_settings
from modoboa.core.models import User
from modoboa.core.extensions import exts_pool
from modoboa.core.management.commands import CloseConnectionMixin
from ...models import Alias


class Command(BaseCommand, CloseConnectionMixin):
class Command(BaseCommand):
help = 'Export identities (mailbox and aliases) to a csv'

option_list = BaseCommand.option_list + (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

from django.core.management.base import BaseCommand

from modoboa.core.management.commands import CloseConnectionMixin
from modoboa.lib import parameters
from modoboa.lib.sysutils import exec_cmd
from modoboa.lib.exceptions import InternalError
Expand All @@ -18,7 +17,7 @@ class OperationError(Exception):
pass


class Command(BaseCommand, CloseConnectionMixin):
class Command(BaseCommand):
help = 'Handles rename and delete operations on mailboxes'

option_list = BaseCommand.option_list + (
Expand Down
3 changes: 1 addition & 2 deletions modoboa/admin/management/commands/import_domains.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@

from modoboa.core import load_core_settings
from modoboa.core.extensions import exts_pool
from modoboa.core.management.commands import CloseConnectionMixin

from ._import import import_csv


class Command(BaseCommand, CloseConnectionMixin):
class Command(BaseCommand):
args = 'csvfile'
help = 'Import domains and domain aliases from a csv file'

Expand Down
3 changes: 1 addition & 2 deletions modoboa/admin/management/commands/import_identities.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@

from modoboa.core import load_core_settings
from modoboa.core.extensions import exts_pool
from modoboa.core.management.commands import CloseConnectionMixin

from ._import import import_csv


class Command(BaseCommand, CloseConnectionMixin):
class Command(BaseCommand):
args = 'csvfile'
help = 'Import identities from a csv file'

Expand Down
4 changes: 2 additions & 2 deletions modoboa/admin/models/domain.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ def get_for_admin(self, admin):
to fill ``ModelChoiceField`` objects.
"""
if admin.is_superuser:
return self.get_query_set()
return self.get_query_set().filter(owners__user=admin)
return self.get_queryset()
return self.get_queryset().filter(owners__user=admin)


class Domain(AdminObject):
Expand Down
2 changes: 1 addition & 1 deletion modoboa/admin/models/mailbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def get_for_admin(self, admin, squery=None):
qf = Q(pk__in=ids) & qf
else:
qf = Q(pk__in=ids)
return self.get_query_set().select_related().filter(qf)
return self.get_queryset().select_related().filter(qf)


class Mailbox(AdminObject):
Expand Down
20 changes: 12 additions & 8 deletions modoboa/admin/tests/account.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@

class AccountTestCase(ModoTestCase):

def setUp(self):
super(AccountTestCase, self).setUp()
@classmethod
def setUpTestData(cls):
"""Create test data."""
super(AccountTestCase, cls).setUpTestData()
factories.populate_database()

def test_crud(self):
Expand Down Expand Up @@ -115,13 +117,15 @@ def test_master_user(self):

class PermissionsTestCase(ModoTestCase):

def setUp(self):
super(PermissionsTestCase, self).setUp()
@classmethod
def setUpTestData(cls):
"""Create test data."""
super(PermissionsTestCase, cls).setUpTestData()
factories.populate_database()
self.user = User.objects.get(username='user@test.com')
self.values = dict(
username=self.user.username, role="DomainAdmins",
is_active=self.user.is_active, email="user@test.com",
cls.user = User.objects.get(username='user@test.com')
cls.values = dict(
username=cls.user.username, role="DomainAdmins",
is_active=cls.user.is_active, email="user@test.com",
quota_act=True
)

Expand Down
6 changes: 4 additions & 2 deletions modoboa/admin/tests/alias.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@

class AliasTestCase(ModoTestCase):

def setUp(self):
super(AliasTestCase, self).setUp()
@classmethod
def setUpTestData(cls):
"""Create test data."""
super(AliasTestCase, cls).setUpTestData()
factories.populate_database()

def test_alias(self):
Expand Down
6 changes: 4 additions & 2 deletions modoboa/admin/tests/domain.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ class DomainTestCase(ModoTestCase):

"""Test case for Domain."""

def setUp(self):
super(DomainTestCase, self).setUp()
@classmethod
def setUpTestData(cls):
"""Create test data."""
super(DomainTestCase, cls).setUpTestData()
factories.populate_database()

def test_create(self):
Expand Down
8 changes: 5 additions & 3 deletions modoboa/admin/tests/domain_alias.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@

class DomainAliasTestCase(ModoTestCase):

def setUp(self):
super(DomainAliasTestCase, self).setUp()
@classmethod
def setUpTestData(cls):
"""Create test data."""
super(DomainAliasTestCase, cls).setUpTestData()
factories.populate_database()
self.dom = Domain.objects.get(name='test.com')
cls.dom = Domain.objects.get(name='test.com')

def test_model(self):
dom = Domain.objects.get(name="test.com")
Expand Down
10 changes: 6 additions & 4 deletions modoboa/admin/tests/export.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,16 @@ class ExportTestCase(ModoTestCase):

"""Test case for export operations."""

def setUp(self):
super(ExportTestCase, self).setUp()
@classmethod
def setUpTestData(cls):
"""Create test data."""
super(ExportTestCase, cls).setUpTestData()
factories.populate_database()

def __export_identities(self, idtfilter="", grpfilter=""):
self.clt.get(
reverse("admin:_identity_list")
+ "?grpfilter=%s&idtfilter=%s" % (grpfilter, idtfilter)
reverse("admin:_identity_list") +
"?grpfilter=%s&idtfilter=%s" % (grpfilter, idtfilter)
)
return self.clt.post(
reverse("admin:identity_export"),
Expand Down
8 changes: 5 additions & 3 deletions modoboa/admin/tests/import_.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@

class ImportTestCase(ModoTestCase):

def setUp(self):
super(ImportTestCase, self).setUp()
@classmethod
def setUpTestData(cls):
"""Create test data."""
super(ImportTestCase, cls).setUpTestData()
factories.populate_database()

def test_domains_import(self):
Expand Down Expand Up @@ -180,7 +182,7 @@ def test_import_missing_quota(self):
f = ContentFile(b"""
account; user1@test.com; toto; User; One; True; SimpleUsers; user1@test.com
""", name="identities.csv")
resp = self.clt.post(
self.clt.post(
reverse("admin:identity_import"),
{"sourcefile": f, "crypt_password": True}
)
Expand Down
9 changes: 7 additions & 2 deletions modoboa/admin/tests/password_schemes.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,16 @@


class PasswordSchemesTestCase(ModoTestCase):
fixtures = ['initial_users.json']

@classmethod
def setUpTestData(cls):
"""Create test data."""
super(PasswordSchemesTestCase, cls).setUpTestData()
factories.populate_database()

def setUp(self):
"""Test initialization."""
super(PasswordSchemesTestCase, self).setUp()
factories.populate_database()
load_core_settings()

def _create_account(self):
Expand Down
5 changes: 3 additions & 2 deletions modoboa/admin/views/user.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
"""SimpleUsers views."""

from django.contrib.auth.decorators import login_required
from django.utils.translation import ugettext as _
Expand Down Expand Up @@ -38,9 +39,9 @@ def forward(request, tplname="admin/forward.html"):
)

form = ForwardForm()
if al is not None:
if al is not None and al.recipients:
form.fields["dest"].initial = al.recipients
if al.aliasrecipient_set.filter(mailbox=mb.id).exists():
if al.aliasrecipient_set.filter(r_mailbox=mb.pk).exists():
form.fields["keepcopies"].initial = True
return render_to_json_response({
"content": _render_to_string(request, tplname, {
Expand Down
31 changes: 25 additions & 6 deletions modoboa/core/commands/templates/settings.py.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ https://docs.djangoproject.com/en/1.6/ref/settings/
import os
from logging.handlers import SysLogHandler

from django.conf import global_settings
{% if devmode %}
from modoboa.core.dev_settings import *
{% endif %}
Expand All @@ -29,14 +28,16 @@ SECRET_KEY = '{{ secret_key }}'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = {{ devmode }}

TEMPLATE_DEBUG = {{ devmode }}

ALLOWED_HOSTS = [
'{{ allowed_host }}'
]

SITE_ID = 1

# Security settings

X_FRAME_OPTIONS = "DENY"

# Application definition

INSTALLED_APPS = (
Expand Down Expand Up @@ -87,9 +88,27 @@ AUTHENTICATION_BACKENDS = (
'modoboa.lib.authbackends.SimpleBackend',
)

TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
'modoboa.core.context_processors.top_notifications',
)
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
'modoboa.core.context_processors.top_notifications',
],
'debug': {{ devmode }},
},
},
]

ROOT_URLCONF = '{{ name }}.urls'

Expand Down
18 changes: 0 additions & 18 deletions modoboa/core/management/commands/__init__.py
Original file line number Diff line number Diff line change
@@ -1,18 +0,0 @@
"""
Extra classes for management commands.
"""

from django.db import connection


class CloseConnectionMixin(object):

"""
A simple mixin used to close all database connections after
command execution.
"""

def execute(self, *args, **options):
"""Execute will call handle so we can close the connection here."""
super(CloseConnectionMixin, self).execute(*args, **options)
connection.close()
4 changes: 1 addition & 3 deletions modoboa/core/management/commands/cleanlogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,8 @@
from modoboa.core.models import Log
from modoboa.lib import parameters

from . import CloseConnectionMixin


class Command(BaseCommand, CloseConnectionMixin):
class Command(BaseCommand):
args = ''
help = 'Log table cleanup'

Expand Down
3 changes: 1 addition & 2 deletions modoboa/core/management/commands/load_initial_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,9 @@
from modoboa.lib.permissions import add_permissions_to_group
from modoboa.limits.app_settings import load_limits_settings
import modoboa.relaydomains.models as relay_models
from . import CloseConnectionMixin


class Command(BaseCommand, CloseConnectionMixin):
class Command(BaseCommand):

"""Command defintion."""

Expand Down
4 changes: 1 addition & 3 deletions modoboa/core/management/commands/set_default_site.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,8 @@

from django.contrib.sites.models import Site

from . import CloseConnectionMixin


class Command(BaseCommand, CloseConnectionMixin):
class Command(BaseCommand):

"""Management command to set the default site."""

Expand Down
8 changes: 5 additions & 3 deletions modoboa/core/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@

class ProfileTestCase(ModoTestCase):

def setUp(self):
super(ProfileTestCase, self).setUp()
self.account = factories.UserFactory(
@classmethod
def setUpTestData(cls):
"""Create test data."""
super(ProfileTestCase, cls).setUpTestData()
cls.account = factories.UserFactory(
username="user@test.com", groups=('SimpleUsers',)
)

Expand Down

0 comments on commit 7446bdb

Please sign in to comment.