Reputation:
I'm trying to find in this views.py where the Class MovieList references the templates.
import datetime, calendar
from django.contrib.contenttypes.models import ContentType
from django.views.generic import ListView, DetailView
from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext
from django.http import HttpResponse
from movies.models import Movie, Show
from common.views import StatsDetailView
from common.models import Category, HotItem
from directory.models import Venue
import tasks
def _get_movie_dates():
###
# Return list of dates for all future dates with movies showing
###
return Movie.objects.filter(shows__starts__gte=datetime.date.today()).values_list('shows__starts', flat=True).order_by('shows__starts').distinct()
def _get_now_showing():
###
# Return list of movies for now showing
###
return Movie.objects.filter(shows__starts__gte=datetime.date.today()).order_by('name').distinct()
class MovieList(ListView):
model = Movie
paginate_by = 20
context_object_name = 'movies'
category = None
venue = None
date = None
slug_level = ""
def get_queryset(self):
qs = Movie.objects.filter(visible=True,).order_by('-hot', '-showing', 'name')
if self.kwargs.get('category', None):
slugs = self.kwargs['category'].strip('/').split('/')
self.category = get_object_or_404(Category, slug=slugs[-1])
category_ids = [c.id for c in self.category.get_child_categories()]
category_ids.append(self.category.id)
qs = qs.filter(categories__in=category_ids)
if self.kwargs.get('venue', None):
self.venue = get_object_or_404(Venue, slug=self.kwargs['venue'])
venue_ids = [v.id for v in Venue.objects.filter(parent=self.venue)]
venue_ids.append(self.venue.id)
qs = qs.filter(shows__venue__in=venue_ids)
if self.kwargs.get('shortcut', None):
today = datetime.date.today()
shortcut = self.kwargs['shortcut']
if shortcut == 'now-showing':
qs = qs.filter(shows__starts__gte=today,)
elif shortcut == 'today':
qs = qs.filter(shows__starts__exact=today)
elif shortcut == 'tomorrow':
qs = qs.filter(shows__starts__exact=today + datetime.timedelta(days=1))
elif shortcut == 'this-weekend': #Friday - Sunday
days = 4 - today.weekday()
starts = today + datetime.timedelta(days=days)
ends = starts + datetime.timedelta(days=2)
qs = qs.filter(shows__starts__range=(starts, ends))
elif shortcut == 'tickets':
qs = qs.filter(
shows__starts__gte=today,
shows__venue__name__icontains='imax',
visible=True
)
if self.kwargs.get('date', None):
d = datetime.datetime.strptime(self.kwargs['date'], "%Y-%m-%d").date()
self.date = d
qs = qs.filter(shows__starts__exact=d)
return qs.distinct()
def get_context_data(self, **kwargs):
context = super(MovieList, self).get_context_data(**kwargs)
today = datetime.date.today()
#context['categories'] = Category.objects.filter(parent__slug='movies', visible=True,)
context['venues'] = Venue.objects.filter(show__starts__gte=today, parent=None, visible=True,).distinct()
context['category'] = self.category
context['venue'] = self.venue
context['date'] = self.date
context['dates'] = _get_movie_dates()
context['now_showing'] = _get_now_showing()
context['nos'] = len(self.slug_level)
return context
class MovieDetail(StatsDetailView):
model = Movie
context_object_name = 'movie'
def get_context_data(self, **kwargs):
context = super(MovieDetail, self).get_context_data(**kwargs)
today = datetime.date.today()
#context['categories'] = Category.objects.filter(parent__slug='movies', visible=True,)
context['venues'] = Venue.objects.filter(show__starts__gte=today, parent=None, visible=True,).distinct()
context['dates'] = _get_movie_dates()
context['now_showing'] = _get_now_showing()
return context
def buy_movie(req, slug):
movie = get_object_or_404(Movie, slug=slug)
url = 'http://rdtickets.buymore.co.ke/api/buy?movie=%d' % movie.pk
return render_to_response(
'movies/movie_buy.html',
locals(),
RequestContext(req, {})
)
def refresh_buy_more(req):
movies = {}
venues = {}
shows = Show.objects.filter(starts__gte=datetime.date.today())
for show in shows:
movies[show.movie.pk] = show.movie
venues[show.venue.pk] = show.venue
for movie in movies:
tasks.post_movie_to_buymore(movies[movie])
for venue in venues:
tasks.post_venue_to_buymore(venues[venue])
for show in shows:
tasks.post_show_to_buymore(show)
return HttpResponse('synced')
There's no reference to a template from what I can find any assistance in figuring out where the template is will be appreciated.
Upvotes: 1
Views: 864
Reputation: 308899
The Django docs explains how the view determines which template to use:
That’s all the Python code we need to write. We still need to write a template, however. We could explicitly tell the view which template to use by adding a
template_name
attribute to the view, but in the absence of an explicit template Django will infer one from the object’s name. In this case, the inferred template will be"books/publisher_list.html"
– the “books” part comes from the name of the app that defines the model, while the “publisher” bit is just the lowercased version of the model’s name.
So in your case, if you do not set template_name
, the default template will be movies/movie_list.html
.
Upvotes: 3