src/p4l/views.py
changeset 24 3b1b0a9309d6
parent 20 fa466993084a
child 27 d2a40f44cbb9
equal deleted inserted replaced
23:cd4055479ba3 24:3b1b0a9309d6
     4 
     4 
     5 @author: tc
     5 @author: tc
     6 '''
     6 '''
     7 
     7 
     8 from django.conf import settings
     8 from django.conf import settings
     9 #from django.core.paginator import Paginator, InvalidPage, EmptyPage
     9 from django.contrib.auth.decorators import login_required
    10 #from django.db.models import Count
       
    11 #from django.http.response import HttpResponse, HttpResponseForbidden
       
    12 from django.shortcuts import get_object_or_404
    10 from django.shortcuts import get_object_or_404
    13 from django.views.generic import ListView, DetailView#, View
    11 from django.utils.decorators import method_decorator
    14 #from django.views.generic.list import MultipleObjectMixin
    12 from django.views.generic import ListView, DetailView
    15 from .models import Record
    13 from .models import Record
    16 from .forms import RecordFilterForm
    14 from .forms import RecordFilterForm
    17 from .utils import get_labels_for_uris
    15 from .utils import get_labels_for_uris
    18 import logging
    16 import logging
    19 
    17 
    25     queryset = Record.objects.select_related("language").prefetch_related('titles').distinct()  # @UndefinedVariable
    23     queryset = Record.objects.select_related("language").prefetch_related('titles').distinct()  # @UndefinedVariable
    26     paginate_by = settings.NB_RECORDS_BY_PAGE
    24     paginate_by = settings.NB_RECORDS_BY_PAGE
    27     template_name = "p4l/p4l_home.html"
    25     template_name = "p4l/p4l_home.html"
    28     form_class = RecordFilterForm
    26     form_class = RecordFilterForm
    29     
    27     
       
    28     @method_decorator(login_required)
       
    29     def dispatch(self, *args, **kwargs):
       
    30         return super(RecordListView, self).dispatch(*args, **kwargs)
    30     
    31     
    31     def get_context_data(self, **kwargs):
    32     def get_context_data(self, **kwargs):
    32         context = ListView.get_context_data(self, **kwargs)
    33         context = ListView.get_context_data(self, **kwargs)
    33         context['filter_form'] = self.form_class()
    34         context['filter_form'] = self.form_class()
    34         # Add filter params from GET params
    35         # Add filter params from GET params
    50 class RecordDetailView(DetailView):
    51 class RecordDetailView(DetailView):
    51     
    52     
    52     model = Record
    53     model = Record
    53     template_name = "p4l/p4l_record_view.html"
    54     template_name = "p4l/p4l_record_view.html"
    54     slug_field = "uri" # Even if it is useless because we override get_objet
    55     slug_field = "uri" # Even if it is useless because we override get_objet
       
    56     
       
    57     @method_decorator(login_required)
       
    58     def dispatch(self, *args, **kwargs):
       
    59         return super(RecordDetailView, self).dispatch(*args, **kwargs)
    55     
    60     
    56     def get_object(self, queryset=None):
    61     def get_object(self, queryset=None):
    57         if "uri" not in self.request.GET:
    62         if "uri" not in self.request.GET:
    58             raise AttributeError(u"Record view must be called uri GET parameter")
    63             raise AttributeError(u"Record view must be called uri GET parameter")
    59         return get_object_or_404(Record.objects.select_related("language"), uri=self.request.GET["uri"])
    64         return get_object_or_404(Record.objects.select_related("language"), uri=self.request.GET["uri"])