def basket_add(request, id=None): product = get_object_or_404(Product, id=id) baskets = Basket.objects.filter(user=request.user, product=product) if not baskets.exists(): basket = Basket(user=request.user, product=product) basket.quantity += 1 basket.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER')) else: basket = baskets.first() basket.quantity += 1 basket.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('mainapp:product', args=[pk])) product = get_object_or_404(Product, pk=pk) basket = Basket.objects.filter(user=request.user, product=product).first() if not basket: basket = Basket(user=request.user, product=product) basket.quantity += 1 basket.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): # Предварительне условия - пользоватль не авторизован на сайте, и закоментировать две последующие строки кода # Если зайти в продукты, выбрать категорию и выбрать какой-нибудь товар, то перенесет на страницу Аутентификации # if 'login' in request.META.get('HTTP_REFERER'): # return HttpResponseRedirect(reverse('products:product', args=[pk])) product = get_object_or_404(Product, pk=pk) basket = Basket.objects.filter(user=request.user, product=product).first() if not basket: basket = Basket(user=request.user, product=product) basket.quantity += 1 basket.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, prod_id=None): curr_product = Product.objects.get(id=prod_id) curr_basket = Basket.objects.filter(user=request.user, product=curr_product) if not curr_basket.exists(): basket = Basket(user=request.user, product=curr_product) basket.quantity = 1 basket.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER')) else: basket = curr_basket.first() basket.quantity += 1 basket.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('catalog:book', args=[pk])) book = get_object_or_404(Book, pk=pk) old_basket_item = Basket.objects.filter(user=request.user, book=book) if old_basket_item: old_basket_item[0].quantity += 1 old_basket_item[0].save() else: new_basket_item = Basket(user=request.user, book=book) new_basket_item.quantity += 1 new_basket_item.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('products:product', args=[pk])) product = get_object_or_404(Product, pk=pk) basket_item = Basket.objects.filter(user=request.user, product=product).first() if not basket_item: basket_item = Basket(user=request.user, product=product) basket_item.quantity += 1 # добавить 'quantity' в скобки при ошибке update_fields # (если будет приходить пустое поле в сигнале product_quantity_update_save) basket_item.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('products:product', args=[pk])) product = get_object_or_404(Product, pk=pk) basket_item = Basket.objects.filter(user=request.user, product=product).first() print(basket_item) if not basket_item: basket_item = Basket(user=request.user, product=product) basket_item.quantity += 1 basket_item.save() return HttpResponseRedirect(request.META.get( 'HTTP_REFERER')) # возвращается на тот же адрес, от куда пришёл
def add_product(request, pk): if LOGIN_URL in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('mainapp:item', kwargs={'pk': pk})) product = get_object_or_404(Product, pk=pk) # basket = request.user.basket_set.filter(product_pk=pk) basket = Basket.objects.filter(user=request.user, product=product).first() if not basket: basket = Basket(user=request.user, product=product) basket.quantity += 1 basket.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('products:product', args=[pk])) product = get_object_or_404(Product, pk=pk) old_basket_item = Basket.get_product(user=request.user, product=product) if old_basket_item: old_basket_item[0].quantity = F('quantity') + 1 old_basket_item[0].save() update_queries = list(filter(lambda x: 'UPDATE' in x['sql'], connection.queries)) print(f'query basket_add: {update_queries}') else: new_basket_item = Basket(user=request.user, product=product) new_basket_item.quantity += 1 new_basket_item.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('products:product', args=[pk])) product = get_object_or_404(Product, pk=pk) old_basket_item = Basket.objects.filter(user=request.user, product=product) if old_basket_item: old_basket_item[0].quantity += 1 old_basket_item[0].save() else: new_basket_item = Basket(user=request.user, product=product) new_basket_item.quantity += 1 new_basket_item.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): if "login" in request.META.get("HTTP_REFERER"): return HttpResponseRedirect(reverse("products:product", args=[pk])) product = get_object_or_404(Product, pk=pk) basket = Basket.objects.filter(user=request.user, product=product).first() if not basket: basket = Basket(user=request.user, product=product) basket.quantity += 1 else: basket.quantity = F("quantity") + 1 basket.save() update_queries = list(filter(lambda x: "UPDATE" in x["sql"], connection.queries)) print(f"query basket_add: {update_queries}")
def add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('products:product', args=[pk])) product = get_object_or_404(Product, pk=pk) basket = Basket.objects.filter(user=request.user, product=product).first() if not basket: basket = Basket(user=request.user, product=product) basket.quantity += 1 basket.save() #редирект на страницу с которой пришли - HTTP_REFERER return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, category_pk, product_pk): if "login" in request.META.get("HTTP_REFERER"): return HttpResponseRedirect(reverse("catalog:product", args=[category_pk, product_pk])) product = get_object_or_404(Product, pk=product_pk) basket = Basket.objects.filter(user=request.user, product=product).first() if not basket: basket = Basket(user=request.user, product=product) if product.quantity > 0: basket.quantity += 1 basket.save() else: basket.quantity = F("quantity") + 1 basket.save() return HttpResponseRedirect(request.META.get("HTTP_REFERER"))
def basket_add(request, pk): # reverse - преобразование записи namespace в обычный url, считаем что пользователь до авторизации пришёл # со страницы товара и редиректим его на страницу продукта # print(request.META.get('HTTP_REFERER')) if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('products:product', args=[pk])) # Проверяем существующий товар, а не удалённый # product_item = get_object_or_404(Product, pk=pk) product = get_object_or_404(Product, pk=pk) # basket_item = Basket.objects.filter(product=product_item, user=request.user).first() # Анонимный пользователь не может использоваться как ключ и в нем нет ID, для авторизации пользователя # используется специальный декоратор @login_required # вариант блока представлен в коде ниже ## basket = Basket.objects.filter(user=request.user, product=product).first() # # if not basket_item: # if not basket: # # basket_item = Basket(user=request.user, product=product_item) # basket = Basket(user=request.user, product=product) # # # basket_item.quantity += 1 # basket.quantity += 1 # # basket_item.save() # basket.save() # # HTTP_REFERER - адрес откуда пришёл пользователь # # print(request.META.get('HTTP_REFERER')) ## return HttpResponseRedirect(request.META.get('HTTP_REFERER')) old_basket_item = Basket.get_product(user=request.user, product=product).select_related() # old_basket_item = Basket.get_product(user=request.user, product=product).first() if old_basket_item: # old_basket_item[0].quantity += 1 old_basket_item[0].quantity = F('quantity') + 1 old_basket_item[0].save() update_queries = list( filter(lambda x: 'UPDATE' in x['sql'], connection.queries)) print(f'query basket_add: {update_queries}') else: new_basket_item = Basket(user=request.user, product=product) new_basket_item.quantity += 1 # для django 3-й или выше версии с "update_fields=['quantity', 'product']", в др. случ. пусто ".save()" # new_basket_item.save(update_fields=['quantity', 'product']) new_basket_item.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def add_product(request, slug): product = get_object_or_404(Product, slug=slug) exists_item = Basket.objects.filter(user=request.user, product=product).first() if exists_item: exists_item.quantity += 1 exists_item.save() else: exists_item = Basket(product=product, user=request.user) exists_item.save() if request.is_ajax(): return ajax_response(request, exists_item.product.slug, exists_item.quantity) if 'login' in request.META.get('HTTP_REFERER'): return redirect('about', product=slug) return redirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('product', args=[pk])) product = get_object_or_404(Product, pk=pk) _basket = Basket.objects.filter(user=request.user, product=product).first() if not _basket: _basket = Basket(user=request.user, product=product) _basket.quantity = 1 else: # _basket.quantity += 1 # перепишем через F-объект _basket.quantity = F('quantity') + 1 _basket.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('mainapp:product', args=[pk])) product = get_object_or_404(Product, pk=pk) basket_item = Basket.objects.filter(user=request.user, product=product).first() if not basket_item: basket_item = Basket(user=request.user, product=product) basket_item.quantity += 1 basket_item.save() else: # basket_item[0].quantity += 1 basket_item[0].quantity = F('quantity') + 1 basket_item[0].save() # возвращаем на ту страницу, откуда пользователь пришел (request.META.get('HTTP_REFERER')) return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('mainapp:product', args=[pk])) product = get_object_or_404(Product, pk=pk) basket_item = Basket.objects.filter(user=request.user, product=product).first() print(basket_item) if not basket_item: basket_item = Basket(user=request.user, product=product) basket_item.quantity += 1 else: # basket_item.quantity += 1 basket_item.quantity = F('quantity') + 1 basket_item.save() update_queries = list( filter(lambda x: 'UPDATE' in x['sql'], connection.queries)) print(f'запрос корзины: {update_queries}') return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def add_product_to_basket(request, pk): print('-----------pk_basket-----------:', pk) product = get_object_or_404(Product, pk=pk) print('-----------product_basket-----------:', product) #product = get_object_or_404(ProductCatalog, pk=pk) old_basket_item = Basket.objects.filter(user=request.user, title=product) if old_basket_item: old_basket_item[0].quantity += 1 old_basket_item[0].save() print('-----------old_basket_item[0].quantity-----------:', old_basket_item[0].quantity) else: new_basket_item = Basket(user=request.user, title=product) new_basket_item.quantity += 1 new_basket_item.save() print('-----------new_basket_item.quantity-----------:', new_basket_item.quantity) return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): # pk = product_pk if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('catalog:product', args=[pk])) product = get_object_or_404(Product, pk=pk) old_basket_item = Basket.get_product(user=request.user, product=product) if old_basket_item: # old_basket_item[0].quantity += 1 old_basket_item[0].quantity = F('quantity') + 1 old_basket_item[0].save() else: new_basket_item = Basket(user=request.user, product=product) new_basket_item.quantity += 1 new_basket_item.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER')) # отправляет пользователя обратно на ту же страницу
def basket_add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect( reverse('products:product_details', args=[pk])) product = get_object_or_404(Product, pk=pk) basket_item = Basket.objects.filter(user=request.user, product=product).select_related() if basket_item: basket_item[0].quantity = F('quantity') + 1 basket_item[0].save() else: new_basket_item = Basket(user=request.user, product=product) new_basket_item.quantity += 1 new_basket_item.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect( reverse('main:product', kwargs={ 'pk': pk, })) product = get_object_or_404(Product, pk=pk) basket = Basket.objects.filter(user=request.user, product=product).first() if not basket: basket = Basket(user=request.user, product=product, quantity=1) else: basket.quantity = F('quantity') + 1 # basket.quantity += 1 basket.save() # basket_summary return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): product = get_object_or_404(Products, pk=pk) basket = Basket.objects.filter(user=request.user, product=product).first() basket_user = Basket.objects.filter(user=request.user) restauran = product.restaurant if not basket: if not basket_user or product.restaurant == basket_user[0].restauran: basket = Basket(user=request.user, product=product, restauran=restauran) else: return HttpResponseRedirect(request.META.get('HTTP_REFERER')) basket.quantity += 1 basket.save() # return HttpResponseRedirect('http://127.0.0.1:8000/') return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk, quantity): quantity = int(quantity) content = {} product = Product.objects.get(pk=pk) basket = Basket.objects.filter(user=request.user) if basket: old_basket_item = BasketProduct.objects.filter(basket=basket[0], product=product) if old_basket_item: old_basket_item[0].quantity += quantity basket[0].total += old_basket_item[0].product.price * quantity old_basket_item[0].save() else: new_basket_item = BasketProduct(basket=basket[0], product=product) new_basket_item.quantity += quantity basket[0].total += new_basket_item.product.price * quantity new_basket_item.save() basket[0].quantity += quantity basket[0].save() basket = basket[0] else: new_basket = Basket(user=request.user) new_basket.quantity += quantity new_basket.save() new_basket_item = BasketProduct(basket=new_basket, product=product) new_basket_item.quantity += quantity new_basket.total += new_basket_item.product.price * quantity new_basket_item.save() new_basket.save() basket = new_basket if request.is_ajax(): content = { 'basket': basket, } basket_info = render_to_string('basketapp/inc_basket_info.html', content) return JsonResponse({ 'basket_info': basket_info, }) else: return HttpResponseRedirect(request.META.get("HTTP_REFERER"))
def add(request, pk): if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect(reverse('main:product', kwargs={ 'pk': pk, })) product = get_object_or_404(Product, pk=pk) basket = Basket.objects.filter(user=request.user, product=product).first() # альтернативный вариант # basket = request.user.basket.filter(product=product).first() if not basket: basket = Basket(user=request.user, product=product) basket.quantity += 1 # basket.product.quantity -= 1 # basket.product.save() basket.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def add(request, pk): product = get_object_or_404(Product, pk=pk) exists_item = Basket.objects.filter(product__pk=pk, user=request.user) if exists_item: exists_item[0].quantity += 1 exists_item[0].save() else: new_item = Basket(user=request.user, product=product) new_item.quantity = 1 new_item.save() if request.is_ajax(): return JsonResponse( {'quantity': Basket.objects.get(product__pk=pk).quantity}) if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect('/catalog/details/' + str(product.id)) else: return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket(request): content = {} if request.user.is_authenticated: basket = Basket.objects.filter(user=request.user) if basket: basket_products = BasketProduct.objects.filter(basket=basket[0]) content = { 'basket_items': basket_products, } content.update({"basket": basket[0]}) else: basket = Basket(user=request.user) basket.save() basket_products = BasketProduct.objects.filter(basket=basket) content = { 'basket_items': basket_products, } content.update({"basket": basket}) categories = ProductCategory.objects.all() content.update({'category_list': categories}) return render(request, 'basketapp/basket.html', content)
def add(request, pk): card = get_object_or_404(Card, pk=pk) basket = Basket.objects.filter(user=request.user, card=card).only('pk').first() if not basket: basket = Basket(user=request.user, card=card, quantity=1) basket.save() else: # basket.quantity += 1 basket.quantity = F('quantity') + 1 basket.save() if request.is_ajax(): return JsonResponse({ 'basket_total_quantity': basket.total_quantity, 'basket_total_cost': basket.total_cost }) else: return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_add(request, pk): product = get_object_or_404(Products, pk=pk) if 'login' in request.META.get('HTTP_REFERER'): return HttpResponseRedirect( reverse('catalog:products_list', args=[product.restaurant__pk, product.category__pk])) basket = Basket.objects.filter(user=request.user, product=product).first() basket_user = Basket.objects.filter(user=request.user) restauran = product.restaurant if not basket: if not basket_user or product.restaurant == basket_user[0].restauran: basket = Basket(user=request.user, product=product, restauran=restauran) else: return HttpResponseRedirect( reverse('basket:control', args=[product.pk])) basket.quantity += 1 basket.save() # return HttpResponseRedirect('http://127.0.0.1:8000/') return HttpResponseRedirect(request.META.get('HTTP_REFERER'))