Source code for boardinghouse.contrib.template.models
import sys
from django.conf import settings
from django.db import models
from django.utils import six
from django.utils.functional import lazy
from boardinghouse.base import SharedSchemaMixin
from boardinghouse.schema import (
activate_schema, deactivate_schema, get_schema_model,
)
def verbose_name_plural():
if 'makemigrations' in sys.argv:
return u'template schemata'
return u'template {0}'.format(get_schema_model()._meta.verbose_name_plural)
def verbose_name():
if 'makemigrations' in sys.argv:
return u'template schema'
return u'template {0}'.format(get_schema_model()._meta.verbose_name)
[docs]class SchemaTemplateQuerySet(models.query.QuerySet):
def active(self):
return self.filter(is_active=True)
[docs]@six.python_2_unicode_compatible
class SchemaTemplate(SharedSchemaMixin, models.Model):
"""
A ``boardinghouse.contrib.template.models.SchemaTemplate`` can be used
for creating a new schema complete with some initial data.
"""
template_schema_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=128, unique=True)
is_active = models.BooleanField(default=True)
description = models.TextField(null=True, blank=True)
objects = SchemaTemplateQuerySet.as_manager()
class Meta:
default_permissions = ('add', 'change', 'delete', 'view', 'activate', 'clone')
verbose_name = lazy(verbose_name, six.text_type)()
verbose_name_plural = lazy(verbose_name_plural, six.text_type)()
def __str__(self):
return self.name
@property
def schema(self):
return '{0}{1}'.format(settings.BOARDINGHOUSE_TEMPLATE_PREFIX, self.pk)
def activate(self):
activate_schema(self.schema)
def deactivate(self):
deactivate_schema()