def basket_add(request, pk):
    if 'login' in request.META.get('HTTP_REFERER'):
        # print(request.META.get('HTTP_REFERER'))
        # print(pk)
        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 = 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

        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
Esempio n. 2
0
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'))
Esempio n. 3
0
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 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 += 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'))  # вернуться туда же, откуда пришли
Esempio n. 5
0
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'))  # отправляет пользователя обратно на ту же страницу