From 1d44cd892ad9c3f0b02a4fe883c6e7cd92abe8e5 Mon Sep 17 00:00:00 2001
From: Ernesto Rico-Schmidt <e.rico.schmidt@gmail.com>
Date: Wed, 6 Jan 2016 20:49:23 +0100
Subject: [PATCH] moved views

---
 program/urls.py  | 35 ++++++++++++++---------------------
 program/views.py | 31 +++++++++++++++++++++++++++++--
 2 files changed, 43 insertions(+), 23 deletions(-)

diff --git a/program/urls.py b/program/urls.py
index c125de37..18625a44 100644
--- a/program/urls.py
+++ b/program/urls.py
@@ -1,35 +1,28 @@
 from django.conf import settings
 from django.conf.urls import patterns, url
-from django.db.models import Q
 from django.views.decorators.cache import cache_page
-from django.views.generic.detail import DetailView
-from django.views.generic.list import ListView
 
-from views import ShowListView, CurrentShowBoxView, RecommendationsListView, RecommendationsBoxView, DayScheduleView, StylesView, WeekScheduleView
-from models import Host, Show, TimeSlot
+import views
 
 import os
 
 PROGRAM_SITE_MEDIA = os.path.join(os.path.dirname(__file__), '../site_media')
 
-hosts = Host.objects.filter(Q(is_active=True) | Q(always_visible=True)).distinct()
-shows = Show.objects.filter(is_active=True).exclude(id=1).distinct()
-timeslots = TimeSlot.objects.all()
 
 urlpatterns = patterns('',
-                       url(r'^today/?$', DayScheduleView.as_view()),
-                       url(r'^week/?$', WeekScheduleView.as_view()),
-                       url(r'^(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/?$', DayScheduleView.as_view()),
-                       url(r'^(?P<year>\d{4})/(?P<week>\d{1,2})/?$', WeekScheduleView.as_view()),
-                       url(r'^current_box/?$', cache_page(60)(CurrentShowBoxView.as_view())),
-                       url(r'^hosts/?$', ListView.as_view(context_object_name='host_list', queryset=hosts, template_name='host_list.html')),
-                       url(r'^hosts/(?P<pk>\d+)/?$', DetailView.as_view(context_object_name='host', queryset=hosts, template_name='host_detail.html'), name='host-detail'),
-                       url(r'^tips/?$', RecommendationsListView.as_view()),
-                       url(r'^tips_box/?$', RecommendationsBoxView.as_view()),
-                       url(r'^shows/?$', ShowListView.as_view(context_object_name='show_list', queryset=shows, template_name='show_list.html')),
-                       url(r'^shows/(?P<slug>[\w-]+)/?$', DetailView.as_view(queryset=shows, template_name='show_detail.html'), name='show-detail'),
-                       url(r'^(?P<pk>\d+)/?$', DetailView.as_view(queryset=timeslots, template_name='timeslot_detail.html'), name='timeslot-detail'),
-                       url(r'^styles.css$', StylesView.as_view())
+                       url(r'^today/?$', views.DayScheduleView.as_view()),
+                       url(r'^week/?$', views.WeekScheduleView.as_view()),
+                       url(r'^(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/?$', views.DayScheduleView.as_view()),
+                       url(r'^(?P<year>\d{4})/(?P<week>\d{1,2})/?$', views.WeekScheduleView.as_view()),
+                       url(r'^current_box/?$', cache_page(60)(views.CurrentShowBoxView.as_view())),
+                       url(r'^hosts/?$', views.HostListView.as_view()),
+                       url(r'^hosts/(?P<pk>\d+)/?$', views.HostDetailView.as_view(), name='host-detail'),
+                       url(r'^tips/?$', views.RecommendationsListView.as_view()),
+                       url(r'^tips_box/?$', views.RecommendationsBoxView.as_view()),
+                       url(r'^shows/?$', views.ShowListView.as_view()),
+                       url(r'^shows/(?P<slug>[\w-]+)/?$', views.ShowDetailView.as_view(), name='show-detail'),
+                       url(r'^(?P<pk>\d+)/?$', views.TimeSlotDetailView.as_view(), name='timeslot-detail'),
+                       url(r'^styles.css$', views.StylesView.as_view())
                        )
 if settings.DEBUG:
     urlpatterns += patterns('',
diff --git a/program/views.py b/program/views.py
index b6424239..dcfaca92 100644
--- a/program/views.py
+++ b/program/views.py
@@ -5,13 +5,31 @@ from django.db.models import Q
 from django.http import HttpResponse
 from django.shortcuts import get_object_or_404
 from django.views.generic.base import TemplateView
+from django.views.generic.detail import DetailView
 from django.views.generic.list import ListView
 
-from models import BroadcastFormat, MusicFocus, Note, Show, ShowInformation, ShowTopic, TimeSlot
+from models import BroadcastFormat, MusicFocus, Note, Show, ShowInformation, ShowTopic, TimeSlot, Host
+
 from program.utils import tofirstdayinisoweek
 
 
+class HostListView(ListView):
+    context_object_name = 'host_list'
+    queryset = Host.objects.filter(Q(is_active=True) | Q(always_visible=True)).distinct()
+    template_name = 'host_list.html'
+
+
+class HostDetailView(DetailView):
+    context_object_name = 'host'
+    queryset = Host.objects.filter(Q(is_active=True) | Q(always_visible=True)).distinct()
+    template_name = 'host_detail.html'
+
+
 class ShowListView(ListView):
+    context_object_name = 'show_list'
+    queryset = Show.objects.filter(is_active=True).exclude(id=1).distinct()
+    template_name = 'show_list.html'
+
     def get_queryset(self):
         queryset = Show.objects.filter(programslots__until__gt=date.today()).exclude(id=1).distinct()
 
@@ -31,6 +49,15 @@ class ShowListView(ListView):
         return queryset
 
 
+class ShowDetailView(DetailView):
+    queryset = Show.objects.filter(is_active=True).exclude(id=1).distinct()
+    template_name = 'show_detail.html'
+
+class TimeSlotDetailView(DetailView):
+    queryset = TimeSlot.objects.all()
+    template_name = 'timeslot_detail.html'
+
+
 class RecommendationsListView(ListView):
     context_object_name = 'recommendation_list'
     template_name = 'recommendation_list.html'
@@ -43,7 +70,7 @@ class RecommendationsListView(ListView):
 
 
 class RecommendationsBoxView(RecommendationsListView):
-    template_name='boxes/recommendation.html'
+    template_name = 'boxes/recommendation.html'
 
 
 class DayScheduleView(TemplateView):
-- 
GitLab