Exemple #1
0
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'))
Exemple #2
0
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'))
Exemple #3
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)
    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'))
Exemple #4
0
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'))
Exemple #5
0
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'))
Exemple #6
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)
    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'))
Exemple #7
0
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'))  # возвращается на тот же адрес, от куда пришёл
Exemple #8
0
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'))
Exemple #9
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'))
Exemple #10
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.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'))
Exemple #11
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)
    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}")
Exemple #12
0
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"))
Exemple #14
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'))
Exemple #15
0
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'))
Exemple #16
0
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'))
Exemple #17
0
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'))
Exemple #18
0
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'))
Exemple #19
0
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'))
Exemple #20
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'))  # отправляет пользователя обратно на ту же страницу
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'))
Exemple #22
0
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'))
Exemple #23
0
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'))
Exemple #24
0
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"))
Exemple #25
0
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'))
Exemple #26
0
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'))
Exemple #27
0
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)
Exemple #28
0
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'))
Exemple #29
0
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'))