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. 18
      products/views.py

@ -1,13 +1,25 @@
from django.urls import reverse_lazy
from products.forms import ProductSearchForm
from products.models import ProductCategory
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')
content_product_search_form = ProductSearchForm(submit_css_class='content__search-btn')
if ProductSearchForm.form_action.__str__() in request.path and request.GET.get('name'):
left_product_search_form.initial = {'name': request.GET.get('name')}
if ProductSearchForm.form_action in request.resolver_match.view_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 {
'left_product_search_form': left_product_search_form,
'content_product_search_form': content_product_search_form

@ -9,7 +9,7 @@ from django.views.generic import ListView, DetailView
from core.views import ProtectedListView
from .models import (
Manufacturer,Product,ProductCategory
Manufacturer, Product, ProductCategory
)
from .forms import *
@ -23,7 +23,7 @@ class ManufactureListView(ListView):
class ProductDetailsView(DetailView):
model = Product
template_name = 'products/product_detail.html'
title = _('Продукт')
class ProductListView(ListView):
model = Product
@ -35,25 +35,25 @@ class ProductListView(ListView):
def get_title(self):
if self.request.GET.get('name'):
return _('Поиск товара') + ":" + self.request.GET.get('name')
return _('Поиск товара') + ":" + self.request.GET.get('name')
title = _('Список товаров')
if self.request.resolver_match.kwargs.get('category_slug'):
return title + ":" + self.request.resolver_match.kwargs.get('category_slug')
return title
def get_queryset(self):
queryset = super().get_queryset()
if self.kwargs.get('name'):
queryset = queryset.filter(name__icontains=self.kwargs.get('name'))
return queryset
qs = super().get_queryset()
if self.kwargs.get('category_slug'):
qs = qs.filter(category__slug=self.kwargs.get('category_slug'))
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):
context = super().get_context_data(object_list=object_list, **kwargs)
context['title'] = self.get_title()
return context
# Uncomment for elasticsearch
# from .layout import FacetedProductSearchForm

Loading…
Cancel
Save