mirror of https://github.com/snachodog/mybuddy.git
65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
import datetime
|
|
import os
|
|
|
|
from django.apps import AppConfig
|
|
from django.conf import settings
|
|
from django.db.models.signals import post_migrate
|
|
|
|
from dbsettings.loading import set_setting_value, setting_in_db
|
|
|
|
from babybuddy import VERSION
|
|
|
|
|
|
def create_read_only_group(sender, **kwargs):
|
|
from django.contrib.auth.models import Group
|
|
|
|
Group.objects.get_or_create(name=settings.BABY_BUDDY["READ_ONLY_GROUP_NAME"])
|
|
|
|
|
|
def set_default_site_settings(sender, **kwargs):
|
|
"""
|
|
Sets default values for site-wide settings.
|
|
|
|
Based on `dbsettings.utils.set_defaults` which no longer seem to work in
|
|
the latest versions of Django.
|
|
"""
|
|
from core import models
|
|
|
|
# Removed `NAP_START_MIN` and `NAP_START_MAX` values are referenced here
|
|
# for pre-2.0.0 migrations.
|
|
try:
|
|
nap_start_min = datetime.datetime.strptime(
|
|
os.environ.get("NAP_START_MIN"), "%H:%M"
|
|
).time()
|
|
except (TypeError, ValueError):
|
|
nap_start_min = models.Sleep.settings.nap_start_min
|
|
try:
|
|
nap_start_max = datetime.datetime.strptime(
|
|
os.environ.get("NAP_START_MAX"), "%H:%M"
|
|
).time()
|
|
except (TypeError, ValueError):
|
|
nap_start_max = models.Sleep.settings.nap_start_max
|
|
|
|
defaults = (
|
|
("Sleep", "nap_start_min", nap_start_min),
|
|
("Sleep", "nap_start_max", nap_start_max),
|
|
)
|
|
for class_name, attribute_name, value in defaults:
|
|
if not setting_in_db("core.models", class_name, attribute_name):
|
|
set_setting_value("core.models", class_name, attribute_name, value)
|
|
|
|
|
|
class BabyBuddyConfig(AppConfig):
|
|
name = "babybuddy"
|
|
verbose_name = "Baby Buddy"
|
|
version = VERSION
|
|
version_string = VERSION
|
|
|
|
def ready(self):
|
|
if os.path.isfile(".git/refs/heads/master"):
|
|
commit = open(".git/refs/heads/master").read()
|
|
self.version_string += " ({})".format(commit[0:7])
|
|
post_migrate.connect(create_read_only_group, sender=self)
|
|
post_migrate.connect(set_default_site_settings, sender=self)
|