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 cart.forms import CartAddProductForm from .utils import * # from cart.cart import Cart from .models import * class ProductSearchView(ListView): model = Product template_name = 'products/search.html' def get_queryset(self): queryset = super().get_queryset() return queryset.filter(name__icontains=self.request) # Uncomment for elasticsearch # from .layout import FacetedProductSearchForm # from haystack.generic_views import FacetedSearchView as BaseFacetedSearchView # from haystack.query import SearchQuerySet def serialize_decimal(obj): if isinstance(obj, decimal.Decimal): return str(obj) return json.JSONEncoder.default(obj) def producerslist(request): username = auth.get_user(request).username # category = None # categories = ProductCategory.objects.filter(level__lte=0) # products = Product.objects.filter(is_active=True) producers = Manufacturer.objects.filter(is_active=True) # if category_slug: # category = get_object_or_404(ProductCategory, slug=category_slug) # products = products.filter(category__in=category.get_descendants(include_self=True)) return render(request, 'products/list.html', locals()) # def categorieslist(request, producer_slug, category_slug=None): # username = accounts_ext.get_user(request).username # producer = Producer.objects.get(slug=producer_slug) # if category_slug: # _categories = ProductCategory.objects.filter(is_active=True, parent=category_slug) # else: # _categories = ProductCategory.objects.filter(is_active=True, producer=producer, level__lte=0) # categories, products = expand_categories(_categories) # return render(request, 'products/categorieslist.html', {'username': username, 'categories':categories, # 'products': products}) # # def categorieslist(request, path, instance, producer_slug): # username = auth.get_user(request).username # if instance: # _categories = instance.get_children() # else: # _categories = get_list_or_404(ProductCategory, producer__slug=producer_slug, level__lte=0) # if _categories: # categories, products = expand_categories(_categories) # else: # return productslist(request, producer_slug, instance.slug) # return render( # request, # 'products/categorieslist.html', # { # 'username': username, # 'instance': instance, # 'categories': categories, # 'producer_slug': producer_slug, # 'products': products # } # ) # # def productslist(request, producer_slug, category_slug): # username = auth.get_user(request).username # category = ProductCategory.objects.get(slug=category_slug) # products = Product.objects.filter(is_active=True, category=category) # return render(request, 'products/productslist.html', locals()) # # def product(request, product_slug): # username = auth.get_user(request).username # product = get_object_or_404(Product, slug=product_slug, is_active=True) # cart_product_form = CartAddProductForm() # variant_picker_data = get_variant_picker_data(product) # show_variant_picker = all([v.attributes for v in product.variants.all()]) # # session_key = request.session.session_key # # if not session_key: # # request.session.cycle_key() # # return render(request, 'products/product.html', {'username': username, 'products': product, 'form': cart_product_form, # 'show_variant_picker': show_variant_picker, # 'variant_picker_data': variant_picker_data, # }) # Uncomment for elasticsearch # def autocomplete(request): # sqs = SearchQuerySet().autocomplete(content_auto=request.GET.get('query', ''))[:5] # s = [] # for result in sqs: # print(result) # d = {"value": result.name, "data": result.object.slug} # s.append(d) # output = {'suggestions': s} # return JsonResponse(output) # # class FacetedSearchView(BaseFacetedSearchView): # form_class = FacetedProductSearchForm # facet_fields = ['category', 'producer'] # template_name = 'search/search.html' # paginate_by = 3 # context_object_name = 'object_list'