add domain creation form and model code
- implement domains.forms.CreateHostingDomainForm - implement domains.models.HostingDomainManager.create_for_hosting_package that takes care of creating the necessary database objects for hosting domains assigned to a hosting package
This commit is contained in:
parent
110b3d03f2
commit
8615394c2f
2 changed files with 75 additions and 1 deletions
51
gnuviechadmin/domains/forms.py
Normal file
51
gnuviechadmin/domains/forms.py
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
"""
|
||||||
|
This module defines form classes for domain editing.
|
||||||
|
|
||||||
|
"""
|
||||||
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
|
from django import forms
|
||||||
|
from django.core.urlresolvers import reverse
|
||||||
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
|
from crispy_forms.helper import FormHelper
|
||||||
|
from crispy_forms.layout import (
|
||||||
|
Layout,
|
||||||
|
Submit,
|
||||||
|
)
|
||||||
|
|
||||||
|
from .models import HostingDomain
|
||||||
|
|
||||||
|
|
||||||
|
class CreateHostingDomainForm(forms.ModelForm):
|
||||||
|
"""
|
||||||
|
This form is used to create new HostingDomain instances.
|
||||||
|
|
||||||
|
"""
|
||||||
|
class Meta:
|
||||||
|
model = HostingDomain
|
||||||
|
fields = ['domain']
|
||||||
|
|
||||||
|
def __init__(self, instance, *args, **kwargs):
|
||||||
|
self.hosting_package = kwargs.pop('hostingpackage')
|
||||||
|
super(CreateHostingDomainForm, self).__init__(*args, **kwargs)
|
||||||
|
self.helper = FormHelper()
|
||||||
|
self.helper.form_action = reverse(
|
||||||
|
'create_hosting_domain', kwargs={
|
||||||
|
'package': self.hosting_package.id
|
||||||
|
})
|
||||||
|
self.helper.layout = Layout(
|
||||||
|
'domain',
|
||||||
|
Submit('submit', _('Add Hosting Domain')),
|
||||||
|
)
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
self.cleaned_data = super(CreateHostingDomainForm, self).clean()
|
||||||
|
self.cleaned_data['hosting_package'] = self.hosting_package
|
||||||
|
|
||||||
|
def save(self, commit=True):
|
||||||
|
return HostingDomain.objects.create_for_hosting_package(
|
||||||
|
commit=commit, **self.cleaned_data)
|
||||||
|
|
||||||
|
def save_m2m(self):
|
||||||
|
pass
|
|
@ -4,7 +4,7 @@ This module contains models related to domain names.
|
||||||
"""
|
"""
|
||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models, transaction
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
@ -54,6 +54,27 @@ class MailDomain(DomainBase):
|
||||||
mailaddresses = property(get_mailaddresses)
|
mailaddresses = property(get_mailaddresses)
|
||||||
|
|
||||||
|
|
||||||
|
class HostingDomainManager(models.Manager):
|
||||||
|
"""
|
||||||
|
Default Manager for :py:class:`HostingDomain`.
|
||||||
|
|
||||||
|
"""
|
||||||
|
@transaction.atomic
|
||||||
|
def create_for_hosting_package(
|
||||||
|
self, hosting_package, domain, commit, **kwargs
|
||||||
|
):
|
||||||
|
from hostingpackages.models import CustomerHostingPackageDomain
|
||||||
|
hostingdomain = self.create(
|
||||||
|
customer=hosting_package.customer, domain=domain, **kwargs)
|
||||||
|
hostingdomain.maildomain = MailDomain.objects.create(
|
||||||
|
customer=hosting_package.customer, domain=domain)
|
||||||
|
custdomain = CustomerHostingPackageDomain.objects.create(
|
||||||
|
hosting_package=hosting_package, domain=hostingdomain)
|
||||||
|
if commit:
|
||||||
|
hostingdomain.save()
|
||||||
|
custdomain.save()
|
||||||
|
return hostingdomain
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
class HostingDomain(DomainBase):
|
class HostingDomain(DomainBase):
|
||||||
|
@ -67,6 +88,8 @@ class HostingDomain(DomainBase):
|
||||||
help_text=_('assigned mail domain for this domain')
|
help_text=_('assigned mail domain for this domain')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
objects = HostingDomainManager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Hosting domain')
|
verbose_name = _('Hosting domain')
|
||||||
verbose_name_plural = _('Hosting domains')
|
verbose_name_plural = _('Hosting domains')
|
||||||
|
|
Loading…
Reference in a new issue