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.
39 lines
1.2 KiB
39 lines
1.2 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'
|
|
|
|
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 = SearchQuerySet().models(Exposition, Conference).all()
|
|
return qs
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
self.form = self.get_form(self.get_form_class())
|
|
self.extra_ctx['form'] = self.form
|
|
return super(FilterListView, self).get(request, *args, **kwargs)
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
return self.get(request, *args, **kwargs)
|
|
|