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:
parent
adc57657dd
commit
6cebd80c89
48 changed files with 1081 additions and 576 deletions
|
@ -7,7 +7,7 @@ from __future__ import absolute_import, unicode_literals
|
|||
import re
|
||||
|
||||
from django import forms
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from crispy_forms.helper import FormHelper
|
||||
|
|
|
@ -8,7 +8,6 @@ import model_utils.fields
|
|||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('domains', '0001_initial'),
|
||||
|
@ -18,12 +17,31 @@ class Migration(migrations.Migration):
|
|||
migrations.CreateModel(
|
||||
name='HostingDomain',
|
||||
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)),
|
||||
('domain', models.CharField(unique=True, max_length=128, verbose_name='domain name')),
|
||||
('customer', models.ForeignKey(verbose_name='customer', blank=True, to=settings.AUTH_USER_MODEL, null=True)),
|
||||
('maildomain', models.OneToOneField(null=True, to='domains.MailDomain', blank=True, help_text='assigned mail domain for this domain', verbose_name='mail domain')),
|
||||
('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)),
|
||||
('domain',
|
||||
models.CharField(
|
||||
unique=True, max_length=128, verbose_name='domain name')),
|
||||
('customer',
|
||||
models.ForeignKey(
|
||||
verbose_name='customer', blank=True,
|
||||
to=settings.AUTH_USER_MODEL, null=True,
|
||||
on_delete=models.CASCADE)),
|
||||
('maildomain',
|
||||
models.OneToOneField(
|
||||
null=True, to='domains.MailDomain', blank=True,
|
||||
help_text='assigned mail domain for this domain',
|
||||
verbose_name='mail domain',
|
||||
on_delete=models.CASCADE)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Hosting domain',
|
||||
|
@ -34,13 +52,17 @@ class Migration(migrations.Migration):
|
|||
migrations.AddField(
|
||||
model_name='maildomain',
|
||||
name='customer',
|
||||
field=models.ForeignKey(verbose_name='customer', blank=True, to=settings.AUTH_USER_MODEL, null=True),
|
||||
field=models.ForeignKey(
|
||||
verbose_name='customer', blank=True,
|
||||
to=settings.AUTH_USER_MODEL, null=True,
|
||||
on_delete=models.CASCADE),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='maildomain',
|
||||
name='domain',
|
||||
field=models.CharField(unique=True, max_length=128, verbose_name='domain name'),
|
||||
field=models.CharField(
|
||||
unique=True, max_length=128, verbose_name='domain name'),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
|
|
|
@ -8,7 +8,6 @@ import model_utils.fields
|
|||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('domains', '0002_auto_20150124_1909'),
|
||||
|
@ -18,22 +17,29 @@ class Migration(migrations.Migration):
|
|||
migrations.CreateModel(
|
||||
name='DNSComment',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('id', models.AutoField(
|
||||
verbose_name='ID', serialize=False,
|
||||
auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('commenttype', models.CharField(max_length=10, db_column='type')),
|
||||
('commenttype',
|
||||
models.CharField(max_length=10, db_column='type')),
|
||||
('modified_at', models.IntegerField()),
|
||||
('comment', models.CharField(max_length=65535)),
|
||||
('customer', models.ForeignKey(verbose_name='customer', to=settings.AUTH_USER_MODEL)),
|
||||
('customer', models.ForeignKey(
|
||||
verbose_name='customer',
|
||||
to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
|
||||
],
|
||||
),
|
||||
migrations.RunSQL(
|
||||
'''ALTER TABLE domains_dnscomment ADD CONSTRAINT c_lowercase_name
|
||||
CHECK (((name)::TEXT = LOWER((name)::TEXT)))'''
|
||||
CHECK (((name)::TEXT = LOWER((name)::TEXT)))'''
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DNSCryptoKey',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('id', models.AutoField(
|
||||
verbose_name='ID', serialize=False,
|
||||
auto_created=True, primary_key=True)),
|
||||
('flags', models.IntegerField()),
|
||||
('active', models.BooleanField(default=True)),
|
||||
('content', models.TextField()),
|
||||
|
@ -42,15 +48,30 @@ class Migration(migrations.Migration):
|
|||
migrations.CreateModel(
|
||||
name='DNSDomain',
|
||||
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)),
|
||||
('domain', models.CharField(unique=True, max_length=255, verbose_name='domain name')),
|
||||
('master', models.CharField(max_length=128, null=True, blank=True)),
|
||||
('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)),
|
||||
('domain', models.CharField(
|
||||
unique=True, max_length=255, verbose_name='domain name')),
|
||||
('master',
|
||||
models.CharField(max_length=128, null=True, blank=True)),
|
||||
('last_check', models.IntegerField(null=True)),
|
||||
('domaintype', models.CharField(max_length=6, db_column='type', choices=[('MASTER', 'Master'), ('SLAVE', 'Slave'), ('NATIVE', 'Native')])),
|
||||
('domaintype', models.CharField(
|
||||
max_length=6, db_column='type',
|
||||
choices=[('MASTER', 'Master'),
|
||||
('SLAVE', 'Slave'),
|
||||
('NATIVE', 'Native')])),
|
||||
('notified_serial', models.IntegerField(null=True)),
|
||||
('customer', models.ForeignKey(verbose_name='customer', blank=True, to=settings.AUTH_USER_MODEL, null=True)),
|
||||
('customer', models.ForeignKey(
|
||||
verbose_name='customer', blank=True,
|
||||
to=settings.AUTH_USER_MODEL, null=True,
|
||||
on_delete=models.CASCADE)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'DNS domain',
|
||||
|
@ -64,26 +85,35 @@ class Migration(migrations.Migration):
|
|||
migrations.CreateModel(
|
||||
name='DNSDomainMetadata',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('id', models.AutoField(
|
||||
verbose_name='ID', serialize=False,
|
||||
auto_created=True, primary_key=True)),
|
||||
('kind', models.CharField(max_length=32)),
|
||||
('content', models.TextField()),
|
||||
('domain', models.ForeignKey(to='domains.DNSDomain')),
|
||||
('domain', models.ForeignKey(
|
||||
to='domains.DNSDomain', on_delete=models.CASCADE)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DNSRecord',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(db_index=True, max_length=255, null=True, blank=True)),
|
||||
('recordtype', models.CharField(max_length=10, null=True, db_column='type', blank=True)),
|
||||
('content', models.CharField(max_length=65535, null=True, blank=True)),
|
||||
('id', models.AutoField(
|
||||
verbose_name='ID', serialize=False,
|
||||
auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(
|
||||
db_index=True, max_length=255, null=True, blank=True)),
|
||||
('recordtype', models.CharField(
|
||||
max_length=10, null=True, db_column='type', blank=True)),
|
||||
('content', models.CharField(
|
||||
max_length=65535, null=True, blank=True)),
|
||||
('ttl', models.IntegerField(null=True)),
|
||||
('prio', models.IntegerField(null=True)),
|
||||
('change_date', models.IntegerField(null=True)),
|
||||
('disabled', models.BooleanField(default=False)),
|
||||
('ordername', models.CharField(max_length=255)),
|
||||
('auth', models.BooleanField(default=True)),
|
||||
('domain', models.ForeignKey(to='domains.DNSDomain')),
|
||||
('domain', models.ForeignKey(
|
||||
to='domains.DNSDomain', on_delete=models.CASCADE)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'DNS record',
|
||||
|
@ -101,16 +131,22 @@ class Migration(migrations.Migration):
|
|||
migrations.CreateModel(
|
||||
name='DNSSupermaster',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('id', models.AutoField(
|
||||
verbose_name='ID', serialize=False,
|
||||
auto_created=True, primary_key=True)),
|
||||
('ip', models.GenericIPAddressField()),
|
||||
('nameserver', models.CharField(max_length=255)),
|
||||
('customer', models.ForeignKey(verbose_name='customer', to=settings.AUTH_USER_MODEL)),
|
||||
('customer', models.ForeignKey(
|
||||
verbose_name='customer', to=settings.AUTH_USER_MODEL,
|
||||
on_delete=models.CASCADE)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DNSTSIGKey',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('id', models.AutoField(
|
||||
verbose_name='ID', serialize=False,
|
||||
auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('algorithm', models.CharField(max_length=50)),
|
||||
('secret', models.CharField(max_length=255)),
|
||||
|
@ -123,22 +159,26 @@ class Migration(migrations.Migration):
|
|||
migrations.AlterField(
|
||||
model_name='hostingdomain',
|
||||
name='domain',
|
||||
field=models.CharField(unique=True, max_length=255, verbose_name='domain name'),
|
||||
field=models.CharField(
|
||||
unique=True, max_length=255, verbose_name='domain name'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='maildomain',
|
||||
name='domain',
|
||||
field=models.CharField(unique=True, max_length=255, verbose_name='domain name'),
|
||||
field=models.CharField(
|
||||
unique=True, max_length=255, verbose_name='domain name'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='dnscryptokey',
|
||||
name='domain',
|
||||
field=models.ForeignKey(to='domains.DNSDomain'),
|
||||
field=models.ForeignKey(
|
||||
to='domains.DNSDomain', on_delete=models.CASCADE),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='dnscomment',
|
||||
name='domain',
|
||||
field=models.ForeignKey(to='domains.DNSDomain'),
|
||||
field=models.ForeignKey(
|
||||
to='domains.DNSDomain', on_delete=models.CASCADE),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='dnssupermaster',
|
||||
|
@ -154,6 +194,6 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
migrations.AlterIndexTogether(
|
||||
name='dnscomment',
|
||||
index_together=set([('name', 'commenttype'), ('domain', 'modified_at')]),
|
||||
index_together={('name', 'commenttype'), ('domain', 'modified_at')},
|
||||
),
|
||||
]
|
||||
|
|
|
@ -58,7 +58,7 @@ class DomainBase(TimeStampedModel):
|
|||
domain = models.CharField(_('domain name'), max_length=255, unique=True)
|
||||
customer = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL, verbose_name=_('customer'), blank=True,
|
||||
null=True)
|
||||
null=True, on_delete=models.CASCADE)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
@ -119,7 +119,8 @@ class HostingDomain(DomainBase):
|
|||
"""
|
||||
maildomain = models.OneToOneField(
|
||||
MailDomain, verbose_name=_('mail domain'), blank=True, null=True,
|
||||
help_text=_('assigned mail domain for this domain')
|
||||
help_text=_('assigned mail domain for this domain'),
|
||||
on_delete=models.CASCADE,
|
||||
)
|
||||
|
||||
objects = HostingDomainManager()
|
||||
|
@ -208,7 +209,7 @@ class DNSRecord(models.Model):
|
|||
domain_id, ordername text_pattern_ops);
|
||||
|
||||
"""
|
||||
domain = models.ForeignKey('DNSDomain')
|
||||
domain = models.ForeignKey('DNSDomain', on_delete=models.CASCADE)
|
||||
name = models.CharField(
|
||||
max_length=255, blank=True, null=True, db_index=True)
|
||||
recordtype = models.CharField(
|
||||
|
@ -255,7 +256,8 @@ class DNSSupermaster(models.Model):
|
|||
nameserver = models.CharField(max_length=255)
|
||||
# account is replaced by customer
|
||||
customer = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL, verbose_name=_('customer'))
|
||||
settings.AUTH_USER_MODEL, verbose_name=_('customer'),
|
||||
on_delete=models.CASCADE)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('DNS supermaster')
|
||||
|
@ -299,13 +301,14 @@ class DNSComment(models.Model):
|
|||
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
|
||||
|
||||
"""
|
||||
domain = models.ForeignKey('DNSDomain')
|
||||
domain = models.ForeignKey('DNSDomain', on_delete=models.CASCADE)
|
||||
name = models.CharField(max_length=255)
|
||||
commenttype = models.CharField(max_length=10, db_column='type')
|
||||
modified_at = models.IntegerField()
|
||||
# account is replaced by customer
|
||||
customer = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL, verbose_name=_('customer'))
|
||||
settings.AUTH_USER_MODEL, verbose_name=_('customer'),
|
||||
on_delete=models.CASCADE)
|
||||
comment = models.CharField(max_length=65535)
|
||||
# check constraint is added via RunSQL in migration
|
||||
|
||||
|
@ -343,7 +346,7 @@ class DNSDomainMetadata(models.Model):
|
|||
CREATE INDEX domainidmetaindex ON domainmetadata(domain_id);
|
||||
|
||||
"""
|
||||
domain = models.ForeignKey('DNSDomain')
|
||||
domain = models.ForeignKey('DNSDomain', on_delete=models.CASCADE)
|
||||
kind = models.CharField(max_length=32, choices=DNS_DOMAIN_METADATA_KINDS)
|
||||
content = models.TextField()
|
||||
|
||||
|
@ -376,7 +379,7 @@ class DNSCryptoKey(models.Model):
|
|||
CREATE INDEX domainidindex ON cryptokeys(domain_id);
|
||||
|
||||
"""
|
||||
domain = models.ForeignKey('DNSDomain')
|
||||
domain = models.ForeignKey('DNSDomain', on_delete=models.CASCADE)
|
||||
flags = models.IntegerField()
|
||||
active = models.BooleanField(default=True)
|
||||
content = models.TextField()
|
||||
|
|
|
@ -4,16 +4,13 @@ This module defines views related to domains.
|
|||
"""
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from braces.views import StaffuserRequiredMixin
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.shortcuts import redirect, get_object_or_404
|
||||
from django.views.generic.edit import CreateView
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.contrib import messages
|
||||
|
||||
from braces.views import (
|
||||
LoginRequiredMixin,
|
||||
StaffuserRequiredMixin,
|
||||
)
|
||||
|
||||
from hostingpackages.models import CustomerHostingPackage
|
||||
|
||||
from .forms import CreateHostingDomainForm
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue