aircox-radiocampus/website/views.py
2015-10-13 17:52:59 +02:00

74 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