diff -r 63c5437a9b7d -r 047675624f45 src/p4l/views.py --- a/src/p4l/views.py Wed Aug 28 11:16:03 2013 +0200 +++ b/src/p4l/views.py Wed Aug 28 13:36:31 2013 +0200 @@ -12,37 +12,33 @@ 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): - queryset = Record.objects.select_related() # @UndefinedVariable + queryset = Record.objects.select_related("language").prefetch_related('titles') # @UndefinedVariable paginate_by = settings.NB_RECORDS_BY_PAGE - #paginator_class = JocondePaginator template_name = "p4l/p4l_home.html" - #filter_form_class = TermFilterForm + form_class = RecordFilterForm + -# def get_filter_form(self): -# initial = { 'order_by':'label', -# 'order_dir': 'asc', -# 'thesaurus': None, -# 'label': None, -# 'link_status': -1, -# 'validated': None} -# return self.filter_form_class(self.request.GET, initial=initial, auto_id=True) -# -# def get_context_data(self, **kwargs): -# context = ListView.get_context_data(self, **kwargs) -# context['filter_form'] = self.get_filter_form() -# context['term_tree_valid_thesaurus'] = json.dumps([entry['thesaurus__id'] for entry in Term.objects.root_nodes().values('thesaurus__id').annotate(root_nodes_count=Count('thesaurus__id')).order_by().filter(root_nodes_count__lt=settings.JOCONDE_TERM_TREE_MAX_ROOT_NODE)]) # @UndefinedVariable -# return context -# -# def get_queryset(self): -# qs = super(TermListView, self).get_queryset() -# filter_form = self.get_filter_form() -# if filter_form.is_valid(): -# return filter_form.get_filter_qs(qs) -# else: -# return None + def get_context_data(self, **kwargs): + context = ListView.get_context_data(self, **kwargs) + context['filter_form'] = self.form_class() + # Add filter params from GET params + filter_params = {} + if 'title' in self.request.GET: + filter_params['title'] = self.request.GET['title'] + context['filter_params'] = filter_params + return context + + def get_queryset(self): + qs = super(RecordListView, self).get_queryset() + filter_form = self.form_class(self.request.GET) + if filter_form.is_valid(): + return filter_form.get_filter_qs(qs) + else: + return qs