38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
import datetime
|
|
|
|
from django.db import models
|
|
from django.templatetags.static import static
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from aircox import models as aircox
|
|
from aircox_web.fields import PositiveSmallMinMaxField
|
|
|
|
|
|
class Timetable(models.Model):
|
|
station = models.ForeignKey(
|
|
aircox.Station, models.CASCADE, verbose_name=_('station'),
|
|
)
|
|
days_before = models.PositiveSmallMinMaxField(
|
|
_('days before'), min=0, max=6,
|
|
help_text=_('Count of days displayed current date'),
|
|
)
|
|
days_after = models.PositiveSmallMinMaxField(
|
|
_('days after'), min=0, max=6,
|
|
help_text=_('Count of days displayed current date'),
|
|
)
|
|
|
|
def get_queryset(self, date=None):
|
|
date = date if date is not None else datetime.date.today()
|
|
qs = aircox.Diffusion.objects.station(self.station)
|
|
if self.days_before is None and self.days_after is None:
|
|
return qs.at(date)
|
|
|
|
start = date - datetime.timedelta(days=self.days_before) \
|
|
if self.days_before else date
|
|
stop = date + datetime.timedelta(days=self.days_after) \
|
|
if self.days_after else date
|
|
return aircox.Diffusion.objects.station(self.station) \
|
|
.after(start).before(stop)
|
|
|
|
|