gault-millau/apps/timetable/models.py
2019-10-17 15:10:26 +03:00

55 lines
1.6 KiB
Python

from django.db import models
from django.utils.translation import gettext_lazy as _
from datetime import time
from utils.models import ProjectBaseMixin
class Timetable(ProjectBaseMixin):
"""Timetable model."""
MONDAY = 0
TUESDAY = 1
WEDNESDAY = 2
THURSDAY = 3
FRIDAY = 4
SATURDAY = 5
SUNDAY = 6
NOON = time(17, 0)
WEEKDAYS_CHOICES = (
(MONDAY, _('Monday')),
(TUESDAY, _('Tuesday')),
(WEDNESDAY, _('Wednesday')),
(THURSDAY, _('Thursday')),
(FRIDAY, _('Friday')),
(SATURDAY, _('Saturday')),
(SUNDAY, _('Sunday')))
weekday = models.PositiveSmallIntegerField(choices=WEEKDAYS_CHOICES, verbose_name=_('Week day'))
lunch_start = models.TimeField(verbose_name=_('Lunch start time'), null=True)
lunch_end = models.TimeField(verbose_name=_('Lunch end time'), null=True)
dinner_start = models.TimeField(verbose_name=_('Dinner start time'), null=True)
dinner_end = models.TimeField(verbose_name=_('Dinner end time'), null=True)
opening_at = models.TimeField(verbose_name=_('Opening time'), null=True)
closed_at = models.TimeField(verbose_name=_('Closed time'), null=True)
@property
def closed_at_str(self):
return str(self.closed_at) if self.closed_at else None
@property
def works_at_noon(self):
return bool(self.closed_at and self.closed_at <= self.NOON)
@property
def works_at_afternoon(self):
return bool(self.closed_at and self.closed_at > self.NOON)
class Meta:
"""Meta class."""
verbose_name = _('Timetable')
verbose_name_plural = _('Timetables')
ordering = ['weekday']