"""
This module defines the database models for website handling.

"""
from __future__ import absolute_import, unicode_literals

from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext as _

from domains.models import HostingDomain
from osusers.models import User as OsUser


@python_2_unicode_compatible
class Website(models.Model):
    """
    This is the model for a website.

    """
    subdomain = models.CharField(
        _('sub domain'), max_length=64)
    osuser = models.ForeignKey(
        OsUser, verbose_name=_('operating system user'))
    domain = models.ForeignKey(
        HostingDomain, verbose_name=_('domain'))
    wildcard = models.BooleanField(_('wildcard'), default=False)

    class Meta:
        unique_together = [('domain', 'subdomain')]
        verbose_name = _('website')
        verbose_name_plural = _('websites')

    def __str__(self):
        return "{subdomain}.{domain}".format(
            subdomain=self.subdomain, domain=self.domain.domain
        )