From b1c06ac9b075be9c551b906d0f323bc2b9c35c00 Mon Sep 17 00:00:00 2001 From: Ernesto Rico-Schmidt Date: Sun, 13 Mar 2011 18:42:51 +0100 Subject: added filtering to the show list view. diff --git a/program/views.py b/program/views.py index b9f476b..062ce6d 100644 --- a/program/views.py +++ b/program/views.py @@ -1,4 +1,5 @@ from django.views.generic.list import ListView +from django.shortcuts import get_object_or_404 from models import BroadcastFormat, MusicFocus, Note, Show, ShowInformation, ShowTopic @@ -6,7 +7,6 @@ from datetime import datetime, timedelta class ShowListView(ListView): context_object_name = 'show_list' - model = Show def get_context_data(self, **kwargs): context = super(ShowListView, self).get_context_data(**kwargs) @@ -17,7 +17,27 @@ class ShowListView(ListView): context['showtopic_list'] = 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' @@ -26,4 +46,4 @@ class RecommendationsView(ListView): now = datetime.now() in_one_week = now + timedelta(weeks=1) - return Note.objects.filter(status=1, timeslot__start__range=(now, in_one_week))[:10] \ No newline at end of file + return Note.objects.filter(status=1, timeslot__start__range=(now, in_one_week))[:10] -- cgit v0.10.2