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