|
1
|
1 |
# -*- coding: utf-8 -*- |
|
|
2 |
''' |
|
|
3 |
Created on Aug 27, 2013 |
|
|
4 |
|
|
|
5 |
@author: tc |
|
|
6 |
''' |
|
|
7 |
|
|
|
8 |
from django.conf import settings |
|
|
9 |
from django.core.paginator import Paginator, InvalidPage, EmptyPage |
|
|
10 |
from django.db.models import Count |
|
|
11 |
#from django.http.response import HttpResponse, HttpResponseForbidden |
|
|
12 |
from django.views.generic import ListView#, DetailView, View |
|
|
13 |
#from django.views.generic.list import MultipleObjectMixin |
|
|
14 |
from .models import Record |
|
4
|
15 |
from .forms import RecordFilterForm |
|
1
|
16 |
import logging |
|
|
17 |
|
|
|
18 |
logger = logging.getLogger(__name__) |
|
|
19 |
|
|
|
20 |
class RecordListView(ListView): |
|
|
21 |
|
|
4
|
22 |
queryset = Record.objects.select_related("language").prefetch_related('titles') # @UndefinedVariable |
|
1
|
23 |
paginate_by = settings.NB_RECORDS_BY_PAGE |
|
|
24 |
template_name = "p4l/p4l_home.html" |
|
4
|
25 |
form_class = RecordFilterForm |
|
|
26 |
|
|
1
|
27 |
|
|
4
|
28 |
def get_context_data(self, **kwargs): |
|
|
29 |
context = ListView.get_context_data(self, **kwargs) |
|
|
30 |
context['filter_form'] = self.form_class() |
|
|
31 |
# Add filter params from GET params |
|
|
32 |
filter_params = {} |
|
|
33 |
if 'title' in self.request.GET: |
|
|
34 |
filter_params['title'] = self.request.GET['title'] |
|
|
35 |
context['filter_params'] = filter_params |
|
|
36 |
return context |
|
|
37 |
|
|
|
38 |
def get_queryset(self): |
|
|
39 |
qs = super(RecordListView, self).get_queryset() |
|
|
40 |
filter_form = self.form_class(self.request.GET) |
|
|
41 |
if filter_form.is_valid(): |
|
|
42 |
return filter_form.get_filter_qs(qs) |
|
|
43 |
else: |
|
|
44 |
return qs |