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.
 
 
 
 

68 lines
2.5 KiB

# from haystack.forms import FacetedSearchForm
# class FacetedProductSearchForm(FacetedSearchForm):
# def __init__(self, *args, **kwargs):
# data = dict(kwargs.get("data", []))
# self.categories = data.get('category', [])
# self.producers = data.get('producer', [])
# super(FacetedProductSearchForm, self).__init__(*args, **kwargs)
#
# def search(self):
# sqs = super(FacetedProductSearchForm, self).search()
# if self.categories:
# query = None
# for category in self.categories:
# if query:
# query += u' OR '
# else:
# query = u''
# query += u'"%s"' % sqs.query.clean(category)
# sqs = sqs.narrow(u'category_exact:%s' % query)
# if self.producers:
# query = None
# for producer in self.producers:
# if query:
# query += u' OR '
# else:
# query = u''
# query += u'"%s"' % sqs.query.clean(producer)
# sqs = sqs.narrow(u'brand_exact:%s' % query)
# return sqs
from crispy_forms.layout import Layout, Field, Button
from django import forms
from crispy_forms.helper import FormHelper
from django.forms import formset_factory
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from .models import Product, ProductAttribute
class ProductFilterForm(forms.Form):
def __init__(self, *args,**kwargs):
super().__init__(*args,**kwargs)
class ProductSearchForm(forms.ModelForm):
field_template = 'bootstrap/forms/product_search.html'
form_action = 'products:product_list'
submit_css_class = None
def __init__(self, *args, **kwargs):
self.submit_css_class = kwargs.pop('submit_css_class')
self.helper = FormHelper()
self.helper.form_action = reverse_lazy(self.form_action)
self.helper.form_method = 'get'
self.helper.layout = Layout(
Field('name', template=self.field_template, placeholder="Поиск программы..."),
Button(_('search'),value="search", css_class=self.submit_css_class, template=self.field_template)
)
super().__init__(*args, **kwargs)
class Meta:
model = Product
fields = ['name']
inline_product_filter_formset = formset_factory(ProductFilterForm,extra=ProductAttribute.objects.all(),can_order=True,can_delete=False)