summaryrefslogtreecommitdiff
path: root/program/views.py
blob: a9eabbca1f08cfa3b39db6c1684f9a8fb525030d (plain)
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