forked from rc/aircox
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from django.utils import timezone
|
|
|
|
from programs.models import Schedule, Event, Episode,\
|
|
EventType
|
|
|
|
|
|
|
|
def scheduled_month_events (date = None, unsaved_only = False):
|
|
"""
|
|
Return a list of scheduled events for the month of the given date. For the
|
|
non existing events, a program attribute to the corresponding program is
|
|
set.
|
|
"""
|
|
if not date:
|
|
date = timezone.datetime.today()
|
|
|
|
schedules = Schedule.objects.all()
|
|
events = []
|
|
|
|
for schedule in schedules:
|
|
dates = schedule.dates_of_month()
|
|
for date in dates:
|
|
event = Event.objects \
|
|
.filter(date = date, parent__parent = schedule.parent)
|
|
|
|
if event.count():
|
|
if not unsaved_only:
|
|
events.append(event)
|
|
continue
|
|
|
|
# get episode
|
|
ep_date = date
|
|
if schedule.rerun:
|
|
ep_date = schedule.rerun.date
|
|
|
|
episode = Episode.objects().filter( date = ep_date
|
|
, parent = schedule.parent )
|
|
episode = episode[0] if episode.count() else None
|
|
|
|
# make event
|
|
event = Event( parent = episode
|
|
, program = schedule.parent
|
|
, type = EventType['diffuse']
|
|
, date = date
|
|
, stream = settings.AIRCOX_SCHEDULED_STREAM
|
|
, scheduled = True
|
|
)
|
|
event.program = schedule.program
|
|
events.append(event)
|
|
return events
|
|
|
|
|