mirror of https://github.com/snachodog/mybuddy.git
parent
ac3a6fd973
commit
8abb6d749e
|
@ -5,11 +5,20 @@ from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
import dbsettings
|
import dbsettings
|
||||||
|
|
||||||
|
from core.fields import NapStartMaxTimeField, NapStartMinTimeField
|
||||||
from .widgets import TimeInput
|
from .widgets import TimeInput
|
||||||
|
|
||||||
|
|
||||||
|
class NapStartMaxTimeValue(dbsettings.TimeValue):
|
||||||
|
field = NapStartMaxTimeField
|
||||||
|
|
||||||
|
|
||||||
|
class NapStartMinTimeValue(dbsettings.TimeValue):
|
||||||
|
field = NapStartMinTimeField
|
||||||
|
|
||||||
|
|
||||||
class NapSettings(dbsettings.Group):
|
class NapSettings(dbsettings.Group):
|
||||||
nap_start_min = dbsettings.TimeValue(
|
nap_start_min = NapStartMinTimeValue(
|
||||||
default=time(6),
|
default=time(6),
|
||||||
description=_("Default minimum nap start time"),
|
description=_("Default minimum nap start time"),
|
||||||
help_text=_(
|
help_text=_(
|
||||||
|
@ -18,7 +27,7 @@ class NapSettings(dbsettings.Group):
|
||||||
),
|
),
|
||||||
widget=TimeInput,
|
widget=TimeInput,
|
||||||
)
|
)
|
||||||
nap_start_max = dbsettings.TimeValue(
|
nap_start_max = NapStartMaxTimeValue(
|
||||||
default=time(18),
|
default=time(18),
|
||||||
description=_("Default maximum nap start time"),
|
description=_("Default maximum nap start time"),
|
||||||
help_text=_(
|
help_text=_(
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from django import forms
|
||||||
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
|
|
||||||
|
class NapStartMaxTimeField(forms.TimeField):
|
||||||
|
def validate(self, value):
|
||||||
|
from core.models import Sleep
|
||||||
|
|
||||||
|
if value < Sleep.settings.nap_start_min:
|
||||||
|
raise forms.ValidationError(
|
||||||
|
_(
|
||||||
|
"Nap start max. value %(max)s must be greater than nap start min. value %(min)s."
|
||||||
|
),
|
||||||
|
code="invalid_nap_start_max",
|
||||||
|
params={"max": value, "min": Sleep.settings.nap_start_min},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class NapStartMinTimeField(forms.TimeField):
|
||||||
|
def validate(self, value):
|
||||||
|
from core.models import Sleep
|
||||||
|
|
||||||
|
if value > Sleep.settings.nap_start_max:
|
||||||
|
raise forms.ValidationError(
|
||||||
|
_(
|
||||||
|
"Nap start min. value %(min)s must be less than nap start min. value %(max)s."
|
||||||
|
),
|
||||||
|
code="invalid_nap_start_min",
|
||||||
|
params={"min": value, "max": Sleep.settings.nap_start_max},
|
||||||
|
)
|
|
@ -1,4 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
import datetime
|
||||||
|
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.core.management import call_command
|
from django.core.management import call_command
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
@ -546,22 +548,14 @@ class SleepFormsTestCase(FormsTestCaseBase):
|
||||||
self.assertContains(page, "Sleep entry deleted")
|
self.assertContains(page, "Sleep entry deleted")
|
||||||
|
|
||||||
def test_nap_default(self):
|
def test_nap_default(self):
|
||||||
models.Sleep.settings.nap_start_min = (
|
models.Sleep.settings.nap_start_min = datetime.time(0, 0, 0)
|
||||||
timezone.now() - timezone.timedelta(hours=1)
|
models.Sleep.settings.nap_start_max = datetime.time(23, 59, 59)
|
||||||
).time()
|
|
||||||
models.Sleep.settings.nap_start_max = (
|
|
||||||
timezone.now() + timezone.timedelta(hours=1)
|
|
||||||
).time()
|
|
||||||
response = self.c.get("/sleep/add/")
|
response = self.c.get("/sleep/add/")
|
||||||
self.assertTrue(response.context["form"].initial["nap"])
|
self.assertTrue(response.context["form"].initial["nap"])
|
||||||
|
|
||||||
def test_not_nap_default(self):
|
def test_not_nap_default(self):
|
||||||
models.Sleep.settings.nap_start_min = (
|
models.Sleep.settings.nap_start_min = datetime.time(0, 0, 0)
|
||||||
timezone.now() + timezone.timedelta(hours=1)
|
models.Sleep.settings.nap_start_max = datetime.time(0, 0, 0)
|
||||||
).time()
|
|
||||||
models.Sleep.settings.nap_start_max = (
|
|
||||||
timezone.now() + timezone.timedelta(hours=2)
|
|
||||||
).time()
|
|
||||||
response = self.c.get("/sleep/add/")
|
response = self.c.get("/sleep/add/")
|
||||||
self.assertFalse(response.context["form"].initial["nap"])
|
self.assertFalse(response.context["form"].initial["nap"])
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from datetime import datetime
|
import datetime
|
||||||
|
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.core.management import call_command
|
from django.core.management import call_command
|
||||||
|
@ -213,12 +213,8 @@ class SleepTestCase(TestCase):
|
||||||
self.assertEqual(sleep.duration, sleep.end - sleep.start)
|
self.assertEqual(sleep.duration, sleep.end - sleep.start)
|
||||||
|
|
||||||
def test_sleep_nap(self):
|
def test_sleep_nap(self):
|
||||||
models.Sleep.settings.nap_start_min = (
|
models.Sleep.settings.nap_start_min = datetime.time(0, 0, 0)
|
||||||
timezone.now() - timezone.timedelta(hours=1)
|
models.Sleep.settings.nap_start_max = datetime.time(23, 59, 59)
|
||||||
).time()
|
|
||||||
models.Sleep.settings.nap_start_max = (
|
|
||||||
timezone.now() + timezone.timedelta(hours=1)
|
|
||||||
).time()
|
|
||||||
sleep = models.Sleep.objects.create(
|
sleep = models.Sleep.objects.create(
|
||||||
child=self.child,
|
child=self.child,
|
||||||
start=timezone.now(),
|
start=timezone.now(),
|
||||||
|
@ -227,12 +223,8 @@ class SleepTestCase(TestCase):
|
||||||
self.assertTrue(sleep.nap)
|
self.assertTrue(sleep.nap)
|
||||||
|
|
||||||
def test_sleep_not_nap(self):
|
def test_sleep_not_nap(self):
|
||||||
models.Sleep.settings.nap_start_min = (
|
models.Sleep.settings.nap_start_min = datetime.time(0, 0, 0)
|
||||||
timezone.now() + timezone.timedelta(hours=1)
|
models.Sleep.settings.nap_start_max = datetime.time(0, 0, 0)
|
||||||
).time()
|
|
||||||
models.Sleep.settings.nap_start_max = (
|
|
||||||
timezone.now() + timezone.timedelta(hours=2)
|
|
||||||
).time()
|
|
||||||
sleep = models.Sleep.objects.create(
|
sleep = models.Sleep.objects.create(
|
||||||
child=self.child,
|
child=self.child,
|
||||||
start=timezone.now(),
|
start=timezone.now(),
|
||||||
|
|
Loading…
Reference in New Issue