summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/urls.py35
-rw-r--r--program/views.py31
2 files changed, 43 insertions, 23 deletions
diff --git a/program/urls.py b/program/urls.py
index c125de3..18625a4 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 b642423..dcfaca9 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):