diff --git a/products/context_processors.py b/products/context_processors.py index 8a34ae7..79e2b0a 100644 --- a/products/context_processors.py +++ b/products/context_processors.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 diff --git a/products/views.py b/products/views.py index f6b0201..f1688dc 100644 --- a/products/views.py +++ b/products/views.py @@ -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