Source code for boardinghouse.contrib.demo.apps
import datetime
from django.apps import AppConfig
from django.core.checks import Error, register
[docs]class BoardingHouseDemoConfig(AppConfig):
name = 'boardinghouse.contrib.demo'
[docs] def ready(self):
# Make sure our required setting exists.
from django.conf import settings
if not hasattr(settings, 'BOARDINGHOUSE_DEMO_PREFIX'):
settings.BOARDINGHOUSE_DEMO_PREFIX = '__demo_'
if not hasattr(settings, 'BOARDINGHOUSE_DEMO_PERIOD'):
settings.BOARDINGHOUSE_DEMO_PERIOD = datetime.timedelta(31)
from boardinghouse.contrib.demo import receivers # NOQA
from .admin import patch_schema_template_admin
patch_schema_template_admin()
[docs]@register('settings')
def check_demo_prefix_stats_with_underscore(app_configs=None, **kwargs):
"""Ensure that the prefix for demo schemata internal names starts with underscore.
This is required because a leading underscore is the trigger that the indicated
schema is not a "regular" schema, and should not be activated according to the
normal rules.
"""
from django.conf import settings
if not settings.BOARDINGHOUSE_DEMO_PREFIX.startswith('_'):
return [Error('BOARDINGHOUSE_DEMO_PREFIX must start with an underscore',
id='boardinghouse.contrib.demo.E001')]
return []
[docs]@register('settings')
def check_demo_expiry_is_timedelta(app_configs=None, **kwargs):
"""
BOARDINGHOUSE_DEMO_PERIOD should be a timedelta instance.
"""
from django.conf import settings
if not isinstance(settings.BOARDINGHOUSE_DEMO_PERIOD, datetime.timedelta):
return [Error('BOARDINGHOUSE_DEMO_PERIOD must be a datetime.timedelta() instance',
id='boardinghouse.contrib.demo.E002')]
return []
[docs]@register('settings')
def ensure_contrib_template_installed(app_configs=None, **kwargs):
"""
`boardinghouse.contrib.template` must be installed.
"""
from django.apps import apps
if not apps.is_installed('boardinghouse.contrib.template'):
return [Error('"boardinghouse.contrib.template" must be installed for "boardinghouse.contrib.demo"',
id='boardinghouse.contrib.demo.E003')]
return []