From 33d89bfde2e72332923a112239db1fff9eccc98e Mon Sep 17 00:00:00 2001 From: Max Yakovenko Date: Mon, 23 Jul 2018 03:15:57 +0300 Subject: [PATCH] refactor products views and urls --- products/urls.py | 6 ++--- products/views.py | 66 ++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 59 insertions(+), 13 deletions(-) diff --git a/products/urls.py b/products/urls.py index d0c4c4a..672f93e 100644 --- a/products/urls.py +++ b/products/urls.py @@ -20,9 +20,9 @@ from .models import ProductCategory urlpatterns = [ - re_path(r'^search/$', views.ProductSearchView.as_view(), name='search') - #url(r'^products/(?P\w+)/$', views.products, name='products'), - # url(r'^$', producerslist, name='ProductList'), + re_path(r'^product/category/search/$', views.ProductSearchView.as_view(), name='product_search'), + re_path(r'^product/(?P\w+)/$', views.ProductDetailsView.as_view(), name='product_details'), + re_path(r'^product/category/list/$', views.ProductCategoryListView.as_view(), name='product_category'), # Uncomment for elasticsearch diff --git a/products/views.py b/products/views.py index 18b3398..4e34b61 100644 --- a/products/views.py +++ b/products/views.py @@ -1,24 +1,69 @@ -from django.shortcuts import render, get_list_or_404, get_object_or_404 -from django.contrib import auth -from django.http import Http404 import json import decimal -from django.views.generic import ListView +from django.conf import settings +from django.shortcuts import render +from django.contrib import auth +from django.utils.translation import ugettext_lazy as _ +from django.views.generic import ListView, DetailView + +from .models import ( + Manufacturer,Product,ProductCategory +) + +from .forms import * + -# from cart.forms import CartAddProductForm -from .utils import * -# from cart.cart import Cart -from .models import * +class ManufactureListView(ListView): + model = Manufacturer + template_name = 'products/manufacture_list.html' + + +class ProductDetailsView(DetailView): + model = Product + template_name = 'products/product_detail.html' class ProductSearchView(ListView): model = Product - template_name = 'products/search.html' + template_name = 'products/product_search.html' + context_object_name = 'products' + paginate_by = settings.DEFAULT_PAGE_AMMOUNT + 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 + + def get_context_data(self, *, object_list=None, **kwargs): + context = super().get_context_data(object_list=object_list, **kwargs) + context['title'] = self.title + ":" + self.request.GET.get('name', '') + return context + + +class ProductListView(ListView): + model = Product + template_name = 'products/product_list.html' + context_object_name = 'products' + paginate_by = settings.DEFAULT_PAGE_AMMOUNT + title = _('Список товаров') def get_queryset(self): queryset = super().get_queryset() - return queryset.filter(name__icontains=self.request) + return queryset + + def get_context_data(self, *, object_list=None, **kwargs): + context = super().get_context_data(object_list=object_list, **kwargs) + context['title'] = self.title + return context + + +class ProductCategoryListView(ListView): + model = ProductCategory + template_name = 'products/product_category_list.html' + # Uncomment for elasticsearch @@ -31,6 +76,7 @@ def serialize_decimal(obj): return str(obj) return json.JSONEncoder.default(obj) + def producerslist(request): username = auth.get_user(request).username # category = None