forked from rc/aircox
75 lines
2.2 KiB
Python
75 lines
2.2 KiB
Python
from django.shortcuts import render
|
|
from django.template.loader import render_to_string
|
|
from django.views.generic import ListView
|
|
from django.views.generic import DetailView
|
|
from django.core import serializers
|
|
from django.utils import timezone as tz
|
|
from django.utils.translation import ugettext as _, ugettext_lazy
|
|
|
|
import aircox_programs.models as programs
|
|
import aircox_cms.routes as routes
|
|
import aircox_cms.utils as utils
|
|
from aircox_cms.views import Sections
|
|
|
|
from website.models import *
|
|
|
|
|
|
class PlayListSection (Sections.List):
|
|
title = _('Playlist')
|
|
|
|
def get_object_list (self):
|
|
tracks = programs.Track.objects \
|
|
.filter(episode = self.object) \
|
|
.order_by('position')
|
|
return [ Sections.List.Item(None, track.title, track.artist)
|
|
for track in tracks ]
|
|
|
|
class ScheduleSection (Sections.List):
|
|
title = _('Schedule')
|
|
|
|
def get_object_list (self):
|
|
scheds = programs.Schedule.objects \
|
|
.filter(program = self.object.pk)
|
|
|
|
return [
|
|
Sections.List.Item(None, sched.get_frequency_display(),
|
|
_('rerun') if sched.rerun else None)
|
|
for sched in scheds
|
|
]
|
|
|
|
class EpisodesSection (Sections.Posts):
|
|
title = _('Episodes')
|
|
|
|
def get_object_list (self):
|
|
return utils.filter_thread(Episode.objects, self.object)
|
|
|
|
def get_url (self):
|
|
return utils.get_url(self.website, routes.ThreadRoute, Episode,
|
|
{ 'thread_model': 'program', 'pk': self.object.pk})
|
|
|
|
class PreviousDiffusions (Sections.Posts):
|
|
title = _('Previous Diffusions')
|
|
fields = ['title', 'time']
|
|
|
|
def get_object_list (self):
|
|
diffusions = programs.Diffusion.objects\
|
|
.filter(date__lt = tz.datetime.now())
|
|
episodes = []
|
|
|
|
for diffusion in diffusions:
|
|
if not diffusion.episode:
|
|
continue
|
|
|
|
post = Episode.objects.filter(related = diffusion.episode.pk)
|
|
if not post:
|
|
continue
|
|
post = post[0]
|
|
post.date = diffusion.date
|
|
episodes.append(post)
|
|
if len(episodes) == self.paginate_by:
|
|
break
|
|
return episodes
|
|
|
|
|
|
|