gva/gnuviechadmin/domains/models.py

75 lines
1.9 KiB
Python

"""
This module contains models related to domain names.
"""
from __future__ import absolute_import, unicode_literals
from django.db import models
from django.conf import settings
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext as _
from model_utils.models import TimeStampedModel
@python_2_unicode_compatible
class DomainBase(TimeStampedModel):
"""
This is the base model for domains.
"""
domain = models.CharField(_('domain name'), max_length=128, unique=True)
customer = models.ForeignKey(
settings.AUTH_USER_MODEL, verbose_name=_('customer'), blank=True,
null=True)
class Meta:
abstract = True
def __str__(self):
return self.name
@python_2_unicode_compatible
class MailDomain(DomainBase):
"""
This is the model for mail domains. Mail domains are used to configure the
mail servers (SMTP/IMAP/POP3). Mail addresses are assigned to these mail
domains.
"""
class Meta:
verbose_name = _('Mail domain')
verbose_name_plural = _('Mail domains')
def __str__(self):
return self.domain
def get_mailaddresses(self):
"""
Get a list of mail addresses assigned to this mail domain.
"""
return self.mailaddress_set.all()
mailaddresses = property(get_mailaddresses)
@python_2_unicode_compatible
class HostingDomain(DomainBase):
"""
This is the model for hosting domains. A hosting domain is linked to a
customer hosting account.
"""
maildomain = models.OneToOneField(
MailDomain, verbose_name=_('mail domain'), blank=True, null=True,
help_text=_('assigned mail domain for this domain')
)
class Meta:
verbose_name = _('Hosting domain')
verbose_name_plural = _('Hosting domains')
def __str__(self):
return self.domain