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
 | 
						|
 | 
						|
 | 
						|
 |