Started port to Django 2.1, Python 3, Docker

This commit is a rough port to Django 2.1, Python 3 and a Docker based local
development setup. Tests fail/error but migrations and the web frontend are
already runnable. Task queue functionality is untested and translations seem to
have trouble.
This commit is contained in:
Jan Dittberner 2018-11-19 23:28:40 +01:00
parent adc57657dd
commit 6cebd80c89
48 changed files with 1081 additions and 576 deletions

View file

@ -5,8 +5,8 @@ This module defines form classes for mailbox and mail address editing.
from __future__ import absolute_import, unicode_literals
from django import forms
from django.core.urlresolvers import reverse
from django.core.validators import validate_email
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from crispy_forms.helper import FormHelper

View file

@ -1,13 +1,12 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import django.utils.timezone
import model_utils.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('domains', '0001_initial'),
('osusers', '0001_initial'),
@ -17,9 +16,15 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='MailAddress',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, verbose_name='created', editable=False)),
('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, verbose_name='modified', editable=False)),
('id', models.AutoField(
verbose_name='ID', serialize=False, auto_created=True,
primary_key=True)),
('created', model_utils.fields.AutoCreatedField(
default=django.utils.timezone.now, verbose_name='created',
editable=False)),
('modified', model_utils.fields.AutoLastModifiedField(
default=django.utils.timezone.now, verbose_name='modified',
editable=False)),
('active', models.BooleanField(default=True)),
('localpart', models.CharField(max_length=128)),
],
@ -32,9 +37,15 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='MailAddressForward',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, verbose_name='created', editable=False)),
('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, verbose_name='modified', editable=False)),
('id', models.AutoField(
verbose_name='ID', serialize=False, auto_created=True,
primary_key=True)),
('created', model_utils.fields.AutoCreatedField(
default=django.utils.timezone.now, verbose_name='created',
editable=False)),
('modified', model_utils.fields.AutoLastModifiedField(
default=django.utils.timezone.now, verbose_name='modified',
editable=False)),
('target', models.EmailField(max_length=254)),
],
options={
@ -44,9 +55,15 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='MailAddressMailbox',
fields=[
('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, verbose_name='created', editable=False)),
('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, verbose_name='modified', editable=False)),
('mailaddress', models.OneToOneField(primary_key=True, serialize=False, to='managemails.MailAddress')),
('created', model_utils.fields.AutoCreatedField(
default=django.utils.timezone.now, verbose_name='created',
editable=False)),
('modified', model_utils.fields.AutoLastModifiedField(
default=django.utils.timezone.now, verbose_name='modified',
editable=False)),
('mailaddress', models.OneToOneField(
primary_key=True, serialize=False,
to='managemails.MailAddress', on_delete=models.CASCADE)),
],
options={
},
@ -55,13 +72,20 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Mailbox',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, verbose_name='created', editable=False)),
('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, verbose_name='modified', editable=False)),
('id', models.AutoField(
verbose_name='ID', serialize=False, auto_created=True,
primary_key=True)),
('created', model_utils.fields.AutoCreatedField(
default=django.utils.timezone.now, verbose_name='created',
editable=False)),
('modified', model_utils.fields.AutoLastModifiedField(
default=django.utils.timezone.now, verbose_name='modified',
editable=False)),
('active', models.BooleanField(default=True)),
('username', models.CharField(unique=True, max_length=128)),
('password', models.CharField(max_length=255)),
('osuser', models.ForeignKey(to='osusers.User')),
('osuser', models.ForeignKey(
to='osusers.User', on_delete=models.CASCADE)),
],
options={
'verbose_name': 'Mailbox',
@ -72,31 +96,34 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='mailaddressmailbox',
name='mailbox',
field=models.ForeignKey(to='managemails.Mailbox'),
field=models.ForeignKey(
to='managemails.Mailbox', on_delete=models.CASCADE),
preserve_default=True,
),
migrations.AlterUniqueTogether(
name='mailaddressmailbox',
unique_together=set([('mailaddress', 'mailbox')]),
unique_together={('mailaddress', 'mailbox')},
),
migrations.AddField(
model_name='mailaddressforward',
name='mailaddress',
field=models.ForeignKey(to='managemails.MailAddress'),
field=models.ForeignKey(
to='managemails.MailAddress', on_delete=models.CASCADE),
preserve_default=True,
),
migrations.AlterUniqueTogether(
name='mailaddressforward',
unique_together=set([('mailaddress', 'target')]),
unique_together={('mailaddress', 'target')},
),
migrations.AddField(
model_name='mailaddress',
name='domain',
field=models.ForeignKey(to='domains.MailDomain'),
field=models.ForeignKey(
to='domains.MailDomain', on_delete=models.CASCADE),
preserve_default=True,
),
migrations.AlterUniqueTogether(
name='mailaddress',
unique_together=set([('localpart', 'domain')]),
unique_together={('localpart', 'domain')},
),
]

View file

@ -1,11 +1,10 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('managemails', '0002_auto_20150117_1238'),
]
@ -14,13 +13,17 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='mailaddressmailbox',
name='mailaddress',
field=models.OneToOneField(primary_key=True, serialize=False, to='managemails.MailAddress', verbose_name='mailaddress'),
field=models.OneToOneField(
primary_key=True, serialize=False, to='managemails.MailAddress',
verbose_name='mailaddress', on_delete=models.CASCADE),
preserve_default=True,
),
migrations.AlterField(
model_name='mailaddressmailbox',
name='mailbox',
field=models.ForeignKey(verbose_name='mailbox', to='managemails.Mailbox'),
field=models.ForeignKey(
verbose_name='mailbox', to='managemails.Mailbox',
on_delete=models.CASCADE),
preserve_default=True,
),
]

View file

@ -1,11 +1,10 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('managemails', '0003_auto_20150124_2029'),
]
@ -14,7 +13,9 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='mailaddress',
name='domain',
field=models.ForeignKey(verbose_name='domain', to='domains.MailDomain'),
field=models.ForeignKey(
verbose_name='domain', to='domains.MailDomain',
on_delete=models.CASCADE),
preserve_default=True,
),
migrations.AlterField(

View file

@ -109,7 +109,7 @@ class Mailbox(ActivateAbleMixin, TimeStampedModel):
This is the model class for a mailbox.
"""
osuser = models.ForeignKey(OsUser)
osuser = models.ForeignKey(OsUser, on_delete=models.CASCADE)
username = models.CharField(max_length=128, unique=True)
password = models.CharField(max_length=255)
@ -162,7 +162,8 @@ class MailAddress(ActivateAbleMixin, TimeStampedModel, models.Model):
"""
localpart = models.CharField(_('local part'), max_length=128)
domain = models.ForeignKey(MailDomain, verbose_name=_('domain'))
domain = models.ForeignKey(
MailDomain, verbose_name=_('domain'), on_delete=models.CASCADE)
class Meta:
ordering = ['domain', 'localpart']
@ -250,8 +251,10 @@ class MailAddressMailbox(TimeStampedModel, models.Model):
"""
mailaddress = models.OneToOneField(
MailAddress, verbose_name=_('mailaddress'), primary_key=True)
mailbox = models.ForeignKey(Mailbox, verbose_name=_('mailbox'))
MailAddress, verbose_name=_('mailaddress'), primary_key=True,
on_delete=models.CASCADE)
mailbox = models.ForeignKey(
Mailbox, verbose_name=_('mailbox'), on_delete=models.CASCADE)
class Meta:
unique_together = ('mailaddress', 'mailbox')
@ -265,7 +268,7 @@ class MailAddressForward(TimeStampedModel, models.Model):
This is a model class to map mail addresses to forwarding addresses.
"""
mailaddress = models.ForeignKey(MailAddress)
mailaddress = models.ForeignKey(MailAddress, on_delete=models.CASCADE)
target = models.EmailField(max_length=254)
class Meta: