3 from django.http import HttpResponseRedirect
4 from django.urls import reverse
5 from django.views.generic.base import TemplateView
7 from emissions.models import Diffusion, Emission, Episode, NewsItem
8 from combo.data.models import Page
13 class Home(panikweb.views.Home):
14 def get_context_data(self, **kwargs):
15 context = super().get_context_data(**kwargs)
16 context['emissions'] = Emission.objects.filter(archived=False).order_by('title')
17 context['newsitems'] = NewsItem.objects.exclude(date__gt=datetime.date.today()
18 ).exclude(expiration_date__lt=datetime.date.today()).order_by('-date')[:3]
19 context['extra_pages'] = Page.objects.filter(exclude_from_navigation=False)
20 context['emissions'] = []
23 def get(request, *args, **kwargs):
24 emissions = Emission.objects.filter(archived=False)
25 if False and len(emissions) == 1:
26 return HttpResponseRedirect(reverse('emission-view', kwargs={'slug': emissions[0].slug}))
27 return super().get(request, *args, **kwargs)
33 class EmissionDetailView(panikweb.views.EmissionDetailView):
34 def get_emission_context(self, emission, episode_ids=None):
35 context = super().get_emission_context(emission, episode_ids)
38 current_year = emission.creation_timestamp.replace(month=5, day=1)
40 current_year = datetime.datetime.now().replace(month=5, day=1).replace(year=2019)
42 episodes_queryset = Episode.objects.select_related()
43 if episode_ids is not None:
44 episodes_queryset = episodes_queryset.filter(id__in=episode_ids)
46 episodes_queryset = episodes_queryset.filter(emission=emission)
48 context['all_episodes'] = episodes_queryset.filter(
49 creation_timestamp__gt=current_year
51 'first_diffusion': 'emissions_diffusion.datetime',
53 select_params=(False, True),
54 where=['''datetime = (SELECT MIN(datetime)
55 FROM emissions_diffusion
56 WHERE episode_id = emissions_episode.id
58 tables=['emissions_diffusion'],
59 ).order_by('first_diffusion').distinct()
64 emission = EmissionDetailView.as_view()
67 class ArchivesView(TemplateView):
68 template_name = 'archives.html'
70 def get_context_data(self, **kwargs):
71 context = super().get_context_data(**kwargs)
72 context['diffusions'] = (
73 Diffusion.objects.filter(episode__soundfile__isnull=False).distinct().order_by('-datetime')
78 archives = ArchivesView.as_view()