You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

50 lines
1.6 KiB

# -*- coding: utf-8 -*-
from django.views.generic.edit import FormMixin
from django.conf import settings
from haystack.query import SearchQuerySet
from functions.custom_views import ContextMixin
from functions.custom_views import ListView
from exposition.models import Exposition
from conference.models import Conference
from .forms import FilterForm
class FilterListView(ContextMixin, FormMixin, ListView):
initial_ctx = {'filtering': True}
form_class = FilterForm
paginate_by = settings.CLIENT_PAGINATION
_template_name = 'events/filter_listview.html'
_template_name_ajax = 'events/filter_listview_ajax.html'
def get_form_kwargs(self):
kwargs = super(FilterListView, self).get_form_kwargs()
kwargs.update({'data': self.request.GET})
return kwargs
def get_queryset(self):
if self.form.is_valid():
qs = self.form.filter()
else:
qs = self.form.default_filter()
self.form.recalculate_choices()
return qs
def get(self, request, *args, **kwargs):
self.form = self.get_form(self.get_form_class())
self.extra_ctx['form'] = self.form
# get params for paginator
get = request.GET.copy()
if 'page' in get:
del get[key]
self.extra_ctx['GETparams'] = get.urlencode()
# ajax or get
self.template_name = self._template_name_ajax if request.is_ajax() else self._template_name
return super(FilterListView, self).get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return self.get(request, *args, **kwargs)