1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
from django.views.generic.list import ListView
from django.views.generic.base import TemplateView
from django.views.generic.dates import DayArchiveView, TodayArchiveView
from django.shortcuts import get_object_or_404
from models import BroadcastFormat, MusicFocus, Note, Show, ShowInformation, ShowTopic, TimeSlot
from datetime import date, datetime, time, timedelta
class ShowListView(ListView):
context_object_name = 'shows'
def get_context_data(self, **kwargs):
context = super(ShowListView, self).get_context_data(**kwargs)
context['broadcastformats'] = BroadcastFormat.objects.all()
context['musicfoci'] = MusicFocus.objects.all()
context['showinformations'] = ShowInformation.objects.all()
context['showtopics'] = ShowTopic.objects.all()
return context
def get_queryset(self):
if 'broadcastformat' in self.request.GET:
broadcastformat = get_object_or_404(BroadcastFormat, slug=self.request.GET['broadcastformat'])
return Show.objects.filter(broadcastformat=broadcastformat)
elif 'musicfocus' in self.request.GET:
musicfocus = get_object_or_404(MusicFocus, slug=self.request.GET['musicfocus'])
return Show.objects.filter(musicfocus=musicfocus)
elif 'showinformation' in self.request.GET:
showinformation = get_object_or_404(ShowInformation, slug=self.request.GET['showinformation'])
return Show.objects.filter(showinformation=showinformation)
elif 'showtopic' in self.request.GET:
showtopic = get_object_or_404(ShowTopic, slug=self.request.GET['showtopic'])
return Show.objects.filter(showtopic=showtopic)
else:
return Show.objects.all()
class RecommendationsView(ListView):
context_object_name = 'recommendations'
template_name = 'program/recommendations.html'
def get_queryset(self):
now = datetime.now()
in_one_week = now + timedelta(weeks=1)
return Note.objects.filter(status=1, timeslot__start__range=(now, in_one_week))[:10]
class TodayScheduleView(TodayArchiveView):
model = TimeSlot
allow_future = True
date_field = 'start'
context_object_name = 'timeslots'
template_name = 'program/today_schedule.html'
def get_context_data(self, **kwargs):
context = super(TodayScheduleView, self).get_context_data(**kwargs)
now = datetime.now()
midnight = datetime.combine(date.today(), time(23, 59))
context['broadcastformats'] = BroadcastFormat.objects.all()
context['recommendations'] = Note.objects.filter(status=1, timeslot__start__range=(now, midnight))
return context
class DayScheduleView(DayArchiveView):
model = TimeSlot
allow_future = True
date_field = 'start'
month_format = '%m'
context_object_name = 'timeslots'
template_name = 'program/day_schedule.html'
def get_context_data(self, **kwargs):
context = super(DayScheduleView, self).get_context_data(**kwargs)
year, month, day = map(int, [self.get_year(), self.get_month(), self.get_day()])
this_day = datetime(year, month, day, 0, 0)
midnight = datetime(year, month, day, 23, 59)
context['broadcastformats'] = BroadcastFormat.objects.all()
context['recommendations'] = Note.objects.filter(status=1, timeslot__start__range=(this_day, midnight))
return context
class CurrentShowView(TemplateView):
template_name = 'program/current.html'
def get_context_data(self, **kwargs):
context = super(CurrentShowView, self).get_context_data(**kwargs)
context['current'] = TimeSlot.objects.get_or_create_current()
context['next'] = TimeSlot.objects.get_or_create_current().get_next_by_start()
context['after_next'] = TimeSlot.objects.get_or_create_current().get_next_by_start().get_next_by_start()
return context
|