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:
Jan Dittberner 2015-01-25 00:38:42 +01:00
parent 110b3d03f2
commit 8615394c2f
2 changed files with 75 additions and 1 deletions

View file

@ -4,7 +4,7 @@ This module contains models related to domain names.
"""
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.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext as _
@ -54,6 +54,27 @@ class MailDomain(DomainBase):
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
class HostingDomain(DomainBase):
@ -67,6 +88,8 @@ class HostingDomain(DomainBase):
help_text=_('assigned mail domain for this domain')
)
objects = HostingDomainManager()
class Meta:
verbose_name = _('Hosting domain')
verbose_name_plural = _('Hosting domains')