diff -r ff4d2d4f1fb0 -r 02008d61c3c8 src/p4l/views.py --- a/src/p4l/views.py Wed Aug 28 18:45:41 2013 +0200 +++ b/src/p4l/views.py Thu Aug 29 15:42:00 2013 +0200 @@ -6,15 +6,17 @@ ''' from django.conf import settings -from django.core.paginator import Paginator, InvalidPage, EmptyPage -from django.db.models import Count +#from django.core.paginator import Paginator, InvalidPage, EmptyPage +#from django.db.models import Count #from django.http.response import HttpResponse, HttpResponseForbidden -from django.views.generic import ListView#, DetailView, View +from django.shortcuts import get_object_or_404 +from django.views.generic import ListView, DetailView#, View #from django.views.generic.list import MultipleObjectMixin from .models import Record from .forms import RecordFilterForm import logging + logger = logging.getLogger(__name__) class RecordListView(ListView): @@ -42,3 +44,18 @@ return filter_form.get_filter_qs(qs) else: return qs + + +class RecordDetailView(DetailView): + + model = Record + template_name = "p4l/p4l_record_view.html" + slug_field = "uri" # Even if it is useless because we override get_objet + + def get_object(self, queryset=None): + if "uri" not in self.request.GET: + raise AttributeError(u"Record view must be called uri GET parameter") + + return get_object_or_404(Record.objects.select_related("language").prefetch_related('titles'), uri=self.request.GET["uri"]) + +