diff options
author | Ernesto Rico-Schmidt <e.rico.schmidt@gmail.com> | 2011-04-25 13:01:00 (GMT) |
---|---|---|
committer | Ernesto Rico-Schmidt <e.rico.schmidt@gmail.com> | 2011-04-25 13:01:00 (GMT) |
commit | c9bbb322f456c3f12ef896384139839d3019bd82 (patch) | |
tree | a43664d6e28a87e518ae68a77f57c3f1a77cd093 /program/models.py | |
parent | f073b806422ca292f8798cf29b3adfc73766d52b (diff) |
simplified day and week views, use Program slot manager now, get_or_create_current is more robust now.
Diffstat (limited to 'program/models.py')
-rw-r--r-- | program/models.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/program/models.py b/program/models.py index 5f0f835..08ca76b 100644 --- a/program/models.py +++ b/program/models.py @@ -1,9 +1,9 @@ from django.contrib.auth.models import User -from django.core.exceptions import ObjectDoesNotExist +from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.db import models from django.utils.translation import ugettext_lazy as _ -from datetime import date, datetime +from datetime import date, datetime, time, timedelta from dateutil.relativedelta import relativedelta from dateutil.rrule import rrule @@ -234,10 +234,20 @@ class TimeSlotManager(models.Manager): until, tend = next.start.date(), next.start.time() new_programslot = ProgramSlot(rrule=once, byweekday=today, show=default, dstart=dstart, tstart=tstart, tend=tend, until=until) - new_programslot.save() + try: + new_programslot.validate_unique() + new_programslot.save() + except ValidationError: + pass return new_programslot.timeslots.all()[0] + def get_day_timeslots(self, day): + today = datetime.combine(day, time(6,0)) + tomorrow = today + timedelta(days=1) + + return TimeSlot.objects.filter(start__range=(today, tomorrow)) + class TimeSlot(models.Model): programslot = models.ForeignKey(ProgramSlot, related_name='timeslots', verbose_name=_("Program slot")) start = models.DateTimeField(_("Start time"), unique=True) @@ -245,7 +255,7 @@ class TimeSlot(models.Model): show = models.ForeignKey(Show, editable=False) objects = TimeSlotManager() - + class Meta: ordering = ('start', 'end') verbose_name = _("Time slot") |