add request context processing for query params in product search logic

remotes/origin/HEAD
Max Yakovenko 8 years ago
parent 6dd08f9eab
commit 6e53dfc7cf
  1. 18
      products/context_processors.py
  2. 14
      products/views.py

@ -1,13 +1,25 @@
from django.urls import reverse_lazy
from products.forms import ProductSearchForm from products.forms import ProductSearchForm
from products.models import ProductCategory from products.models import ProductCategory
def product_search_form(request): def product_search_form(request):
#@TODO: APPLY SEARCH IN THE CONTEXT OF CHOSSEN DIRECTORY #@TODO: APPLY SEARCH IN THE CONTEXT OF CHOSSEN DIRECTORY AND SET OF FILTERS
left_product_search_form = ProductSearchForm(submit_css_class='left-menu__search-btn') left_product_search_form = ProductSearchForm(submit_css_class='left-menu__search-btn')
content_product_search_form = ProductSearchForm(submit_css_class='content__search-btn') content_product_search_form = ProductSearchForm(submit_css_class='content__search-btn')
if ProductSearchForm.form_action.__str__() in request.path and request.GET.get('name'): if ProductSearchForm.form_action in request.resolver_match.view_name:
left_product_search_form.initial = {'name': request.GET.get('name')} if request.resolver_match.kwargs.get('category_slug'):
product_kwargs= request.resolver_match.kwargs
product_list_in_cat = reverse_lazy(ProductSearchForm.form_action, kwargs=product_kwargs)
left_product_search_form.helper.form_action = product_list_in_cat
content_product_search_form.helper.form_action = product_list_in_cat
if request.GET.get('name'):
initial_data = {'name': request.GET.get('name')}
left_product_search_form.initial = initial_data
content_product_search_form.initial = initial_data
return { return {
'left_product_search_form': left_product_search_form, 'left_product_search_form': left_product_search_form,
'content_product_search_form': content_product_search_form 'content_product_search_form': content_product_search_form

@ -23,7 +23,7 @@ class ManufactureListView(ListView):
class ProductDetailsView(DetailView): class ProductDetailsView(DetailView):
model = Product model = Product
template_name = 'products/product_detail.html' template_name = 'products/product_detail.html'
title = _('Продукт')
class ProductListView(ListView): class ProductListView(ListView):
model = Product model = Product
@ -41,19 +41,19 @@ class ProductListView(ListView):
return title + ":" + self.request.resolver_match.kwargs.get('category_slug') return title + ":" + self.request.resolver_match.kwargs.get('category_slug')
return title return title
def get_queryset(self): def get_queryset(self):
queryset = super().get_queryset() qs = super().get_queryset()
if self.kwargs.get('name'): if self.kwargs.get('category_slug'):
queryset = queryset.filter(name__icontains=self.kwargs.get('name')) qs = qs.filter(category__slug=self.kwargs.get('category_slug'))
return queryset if self.request.GET.get('name'):
qs = qs.filter(name__icontains=self.request.GET.get('name'))
return qs
def get_context_data(self, *, object_list=None, **kwargs): def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(object_list=object_list, **kwargs) context = super().get_context_data(object_list=object_list, **kwargs)
context['title'] = self.get_title() context['title'] = self.get_title()
return context return context
# Uncomment for elasticsearch # Uncomment for elasticsearch
# from .layout import FacetedProductSearchForm # from .layout import FacetedProductSearchForm

Loading…
Cancel
Save