Coverage for lino/mixins/periods.py : 57%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# Copyright 2014-2015 Luc Saffre # License: BSD (see file COPYING for details)
Defines classes related to date ranges.
.. autosummary::
"""
return fds(r[0]) + '...' + fds(r[1])
"""Base class for choices of "observed event"-style choicelists."""
super(ObservedEvent, self).__init__(value, name=value, **kwargs)
return qs
"""A model mixin for models which represent a period whose start and end are date fields.
Designed for usage with :class:`lino.modlib.system.mixins.PeriodEvents`.
"""
if not isrange(self.start_date, self.end_date): raise ValidationError(_("Date period ends before it started.")) super(DatePeriod, self).full_clean(*args, **kw)
return (self.start_date, self.end_date)
return (self.end_date and self.end_date <= dd.today())
return (self.start_date and self.start_date > settings.SITE.today())
if self.start_date and self.end_date: if self.start_date == self.end_date: # s = E.tostring(E.b(fdl(self.start_date))) s = fdl(self.start_date) return pgettext("date", "on %s") % s else: kw = dict() kw.update(a=fdl(self.start_date)) kw.update(b=fdl(self.end_date)) return pgettext("date range", "between %(a)s and %(b)s") % kw elif self.start_date: s = fdl(self.start_date) if self.is_future(): return pgettext("future date range", "from %s") % s else: return pgettext("date range", "from %s") % s elif self.end_date: s = fdl(self.end_date) return pgettext("date range", "until %s") % s return self.empty_period_text
def get_parameter_fields(cls, **fields): fields.update( start_date=models.DateField( _("Period from"), blank=True, null=True, default=cls.get_default_start_date, help_text=_("Start date of observed period"))) fields.update( end_date=models.DateField( _("until"), blank=True, null=True, default=cls.get_default_end_date, help_text=_("End date of observed period"))) return super(DatePeriod, cls).get_parameter_fields(**fields)
""":class:`lino.core.param_panel.ParameterPanel` with two fields `start_date` and `end_date` which default to empty.
"""
verbose_name_start=_("Period from"), verbose_name_end=_("until"), **kw): start_date=models.DateField( verbose_name_start, blank=True, null=True, default=self.get_default_start_date, help_text=_("Start date of observed period")), end_date=models.DateField( verbose_name_end, blank=True, null=True, default=self.get_default_end_date, help_text=_("End date of observed period")), )
"""An :class:`ObservedPeriod` for which `start_date` defaults to Jan 1st and `end_date` to Dec 31 of the current year.
"""
D = datetime.date return D(D.today().year, 1, 1)
D = datetime.date return D(D.today().year, 12, 31)
""":class:`lino.core.param_panel.ParameterPanel` with a field `today` which defaults to today.""" kw.update( today=models.DateField( verbose_name, blank=True, null=True, default=settings.SITE.today, help_text=_("Date of observation")), ) super(Today, self).__init__(**kw)
|