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