forked from rc/aircox
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
from django.utils import timezone
|
|
|
|
from programs.models import Schedule, Diffusion, Episode,\
|
|
DiffusionType
|
|
|
|
|
|
|
|
def scheduled_month_diffusions (date = None, unsaved_only = False):
|
|
"""
|
|
Return a list of scheduled diffusions for the month of the given date. For the
|
|
non existing diffusions, a program attribute to the corresponding program is
|
|
set.
|
|
"""
|
|
if not date:
|
|
date = timezone.datetime.today()
|
|
|
|
schedules = Schedule.objects.all()
|
|
diffusions = []
|
|
|
|
for schedule in schedules:
|
|
dates = schedule.dates_of_month()
|
|
for date in dates:
|
|
diffusion = Diffusion.objects \
|
|
.filter(date = date, parent__parent = schedule.parent)
|
|
|
|
if diffusion.count():
|
|
if not unsaved_only:
|
|
diffusions.append(diffusion)
|
|
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 diffusion
|
|
diffusion = Diffusion( parent = episode
|
|
, program = schedule.parent
|
|
, type = DiffusionType['diffuse']
|
|
, date = date
|
|
, stream = settings.AIRCOX_SCHEDULED_STREAM
|
|
, scheduled = True
|
|
)
|
|
diffusion.program = schedule.program
|
|
diffusions.append(diffusion)
|
|
return diffusions
|
|
|
|
|