def product(request, category_slug, product_slug):
    cart = Cart(request)

    product = get_object_or_404(Product,
                                category__slug=category_slug,
                                slug=product_slug)

    if request.method == 'POST':
        form = AddToCartForm(request.POST)

        if form.is_valid():
            quantity = form.cleaned_data['quantity']

            cart.add(product_id=product.id,
                     quantity=quantity,
                     update_quantity=False)

            messages.success(request, 'The product was added to the cart')

            return redirect('product',
                            category_slug=category_slug,
                            product_slug=product_slug)
    else:
        form = AddToCartForm()

    similar_products = list(product.category.products.exclude(id=product.id))

    if len(similar_products) >= 4:
        similar_products = random.sample(similar_products, 4)

    return render(request, 'product/product.html', {
        'form': form,
        'product': product,
        'similar_products': similar_products
    })
Exemple #2
0
def api_add_to_cart(request):

    #'json.loads()' converts JSON object into python dictionary
    #'json.dumps()' converts python dictionary into JSON object
    #'request.body' contains JSON object passed through request
    data = json.loads(request.body)

    jsonresponse = {'success': True}

    product_id = data['product_id']
    update = data['update']
    quantity = data['quantity']

    print(request.body)

    print(data)
    print(data['product_id'])

    #Make an instance of cart class and pass 'request'
    cart = Cart(request)
    product = get_object_or_404(Product, pk=product_id)

    if not update:
        cart.add(product=product, quantity=1, update_quantity=False)
    else:
        cart.add(product=product, quantity=quantity, update_quantity=True)

    return JsonResponse(jsonresponse)
Exemple #3
0
def ajax_add_cart_item_by_sku(request):
    size = Size.objects.get(sku=settings.BIEN_SLUG_MAG_001)
    product = Item.objects.get(available_sizes__id=size.id)

    cart = Cart(request)
    cart.add(product, size.price)

    return JsonResponse({'success': True, 'template': "New size %d" % cart.count()})
Exemple #4
0
def cart_add(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, id=product_id)
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        cart.add(product=product,
                 quantity=cd['quantity'],
                 update_quantity=cd['update'])
    return redirect('cart:cart_detail')
Exemple #5
0
def ajax_validation_magazine_order_form(request, product_id):
    product = get_object_or_404(Product, id=product_id)
    order_form = ProductOrderingForm(data=request.POST, instance=product)

    if order_form.is_valid():
        cart = Cart(request)
        cart.add(product,
                 product.available_sizes().first().price,
                 order_form.cleaned_data['amount'])
        return JsonResponse({'success': True})

    return JsonResponse(order_form.errors.as_json(), status=400, safe=False)
Exemple #6
0
def ajax_validation_order_form(request, product_id):
    item = get_object_or_404(Item, id=product_id)

    order_form = ProductOrderingForm(data=request.POST, instance=item)

    if order_form.is_valid():
        cart = Cart(request)

        size = order_form.cleaned_data.get('available_sizes', None)
        cart.add(item, size.price, order_form.cleaned_data['amount'], size)
        success_url = reverse('products:get_cart')
        return JsonResponse({'success': True, 'success_url': success_url})
    return JsonResponse(order_form.errors.as_json(), status=400, safe=False)
def cart_api(request):
    jsonresponse = {'success', True}
    product_id = request.POST.get('product_id')
    update = request.POST.get('update')
    qty = request.POST.get('quantity', 1)

    cart = Cart(request)
    product = get_object_or_404(Product, pk=product_id)

    if not update:
        cart.add(product=product, quantity=1, update_qty=False)
    else:
        cart.add(product=product, quantity=qty, update_qty=True)

    return JsonResponse(jsonresponse)
Exemple #8
0
def mk_cart_magazine(request):
    size = Size.objects.get(sku=request.GET.get('sku'))

    mag = Item.objects.get(available_sizes__id=size.id, id=request.GET.get('id'))
    # print(mag.available_sizes.first())
    cart = Cart(request)
    try:
        cart.remove(mag)

    except ItemDoesNotExist:
        pass

    cart.add(product=mag, unit_price=size.price, size=size)

    return redirect(reverse('products:get_cart'))
Exemple #9
0
def api_add_to_cart(request):
    data = json.loads(request.body)
    jsonresponse = {'success': True}
    product_id = data['product_id']
    update = data['update']
    quantity = data['quantity']
    
    cart = Cart(request)

    product = get_object_or_404(Product, pk=product_id)
    if not update:
        cart.add(product=product, quantity=1, update_quantity=False)
    else:
        cart.add(product=product, quantity=quantity, update_quantity=True)
    return JsonResponse(jsonresponse)
Exemple #10
0
def add_to_cart(request):
    product_id = request.POST.get('product_id')
    quantity = 1
    curso = get_object_or_404(Curso, id=product_id)
    cart = Cart(request)
    cart.add(curso, curso.precio, quantity)
    try:
        profile = UserProfile.objects.get(user__id=request.user.id)
        print(profile, "<- profile")
        if not profile.cart:
            profile.cart = cart.cart
            profile.save()
    except:
        return redirect(reverse('usuarios:login'))

    return redirect(reverse('pedidos:mi_carrito'))
Exemple #11
0
def product(request, category_slug, product_slug):
    cart = Cart(request)
    product = get_object_or_404(Product,
                                category__slug=category_slug,
                                slug=product_slug)
    if request.method == 'POST':
        form = AddToCartForm(request.POST)

        if form.is_valid():

            quantity = form.cleaned_data['quantity']
            if request.user.is_authenticated:

                queryy = CartProducts.objects.filter(cartUser=request.user,
                                                     cartProduct=product)
                print(len(queryy))
                if len(queryy) == 0:
                    cartpro = CartProducts(cartUser=request.user,
                                           cartProduct=product,
                                           quantity=quantity)
                    cartpro.save()
                else:
                    queryy[0].quantity += 1
                    queryy[0].save()

                cart.add(product_id=product.id,
                         quantity=quantity,
                         update_quantity=False)
            else:
                cart.add(product_id=product.id,
                         quantity=quantity,
                         update_quantity=False)

            messages.success(request, 'The product was added to the cart')

            return redirect('product',
                            category_slug=category_slug,
                            product_slug=product_slug)
    else:
        form = AddToCartForm()
    similar_products = list(product.category.products.exclude(id=product.id))
    return render(request, 'products/product.html', {
        'form': form,
        'product': product,
        'similar_products': similar_products
    })
Exemple #12
0
def api_add_to_cart(request):
    data = json.loads(request.body)

    jsonresponse = {'success': True}
    product_id = data['product_id']

    cart = Cart(request)

    product = get_object_or_404(Product, pk=product_id)

    if (product.num_available <= 0):
        return HttpResponseBadRequest('Product is not available in stock!')

    cart.add(product=product)

    product.num_available -= 1
    product.save()

    return JsonResponse(jsonresponse)
Exemple #13
0
def cart_detail(request):
    cart = Cart(request)

    in_cart = CartProducts

    remove_from_cart = request.GET.get('remove_from_cart', '')
    change_quantity = request.GET.get('change_quantity', '')
    quantity = request.GET.get('quantity', 0)

    if remove_from_cart:
        cart.remove(remove_from_cart)

        return redirect('cart')

    if change_quantity:
        cart.add(change_quantity, quantity, True)

        return redirect('cart')

    return render(request, 'cart.html')
Exemple #14
0
def api_add_to_cart(request):

    data = json.loads(request.body)
    json_response = {'success': True}
    product_id = data['product_id']
    update = data['update']
    quantity = data['quantity']  # Default quantity is 1

    cart = Cart(request)  # Update cart to above values

    product = get_object_or_404(
        Product, pk=product_id
    )  # Public key is product_id if it can't be found throw 404

    if not update:
        cart.add(
            product=product, quantity=1,
            update_quantity=False)  # If not updating the cart, add 1 quantity
    else:
        cart.add(
            product=product, quantity=quantity,
            update_quantity=True)  # Else update with user's chosen quantity

    return JsonResponse(json_response)