Пример #1
0
def product_detail(request, id, slug):
    cart = Cart(request)
    product = get_object_or_404(Product, id=id, slug=slug, available=True)

    if request.method == "POST":
        cart_product_form = CartAddProductForm(request.POST)
        if cart_product_form.is_valid():

            cd = cart_product_form.cleaned_data
            cart.add(product=product,
                     quantity=cd['quantity'],
                     update_quantity=cd['update'])

            return redirect('cart:cart_detail')

    else:
        #product = get_object_or_404(Product, id=id, slug=slug, available=True)
        cart_product_form = CartAddProductForm()

        categories = Category.objects.all()

    return render(
        request, 'detail.html', {
            'product': product,
            'cart_product_form': cart_product_form,
            'categories': categories
        })
Пример #2
0
 def post(self, request, product_id):
     product = get_object_or_404(Product, pk=product_id)
     user = request.user
     form = CartAddProductForm(request.POST)
     cart, created = Cart.objects.get_or_create(user=user)
     items = cart.cartproduct_set.all()
     if form.is_valid():
         quantity = form.cleaned_data['quantity']
         override_quantity = form.cleaned_data['override_quantity']
         if not any(item.product == product
                    for item in items):  # wyrażenie generatorowe
             CartProduct.objects.create(product=product,
                                        cart=cart,
                                        quantity=0)
         cartproduct = CartProduct.objects.get(product=product,
                                               cart__user=user)
         if not override_quantity:
             cartproduct.quantity += quantity
         else:
             cartproduct.quantity = quantity
         if cartproduct.quantity > product.stock:
             cartproduct.quantity = product.stock
             messages.warning(
                 request,
                 "Ze względu na dostępność, liczba zamówionych produktów została ograniczona"
             )
         cartproduct.save()
         return redirect('cart_detail')
Пример #3
0
    def post(self, request, *args, **kwargs):
        """Добавить товар в корзину на странице - карточка товара - Ajax"""

        print(request.POST)

        obj = ProductItem.objects.get(id=request.POST['product_id'])

        response_data = {
            'product_id': obj.id,
            'name': obj.name,
            'articul': obj.articul,
            'quantity': int(request.POST.get('quantity', 0)),
            'price': float(obj.price)
        }

        cart = Cart(request)
        form = CartAddProductForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            cart.add(product=obj,
                     quantity=cd['quantity'],
                     is_update_qty=cd['is_update'])

        return HttpResponse(json.dumps(response_data),
                            content_type="application/json")
Пример #4
0
def product_detail(request, category_slug, id, slug):
    category_list = Category.objects.all()
    category = Category.objects.get(slug=category_slug)
    product = get_object_or_404(Product, id=id, slug=slug)
    start_price = product.price * 70 / 100
    end_price = product.price * 130 / 100
    cart_product_form = CartAddProductForm(
        request.POST if request.method == 'POST' else None, product=product)
    similar_products = Product.objects.filter(
        category=category,
        price__range=(start_price, end_price)).exclude(id=id)[:4]
    title = product.name
    button = '<<< Back to %s' % category.name

    if request.method == 'POST':
        if cart_product_form.is_valid():
            cart = Cart(request)
            cart.add(product=product,
                     quantity=cart_product_form.cleaned_data['quantity'],
                     update_quantity=False)
            return redirect('cart:cart_detail')

    return render(
        request, 'shop/product_detail.html', {
            'product': product,
            'title': title,
            'similar_products': similar_products,
            'category_list': category_list,
            'cart_product_form': cart_product_form,
            'button': button,
        })
Пример #5
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, cd['quantity'], cd['update'])
    return redirect('cart:detail')
Пример #6
0
def cart_add(request, product_id):
    cart = Cart(request)  # create a new cart object passing it the request object 
    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')
Пример #7
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')
Пример #8
0
def CartAdd(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('main:products')
Пример #9
0
def cart_add(requset, product_id):
    cart = Cart(requset)
    product = get_object_or_404(Product, id=product_id)
    form = CartAddProductForm(requset.POST)
    if form.is_valid():
        cd = form.cleaned_data
        cart.add(product=product,
                 product_count=cd['product_count'],
                 update_count=cd['update'])
    return redirect('cart:cart_detail')
Пример #10
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:CartDetail')
Пример #11
0
def cart_add(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Item, id=product_id)
    cart.add(item=product)
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        cart.add(item=product,
                 quantity=cd['quantity'],
                 update_quantity=cd['update'])
    return HttpResponseRedirect(reverse('storeapp:index'))
Пример #12
0
def cart_add(request , product_id):
    print('########################')
    cart=Cart(request)
    product = get_object_or_404(Product, id=product_id)
    form =CartAddProductForm(request.POST)
    if form.is_valid():
        cd =form.cleaned_data
        quantity =cd['quantity']
        update=cd['update']
        cart.add(product = product, quantity = quantity ,update_quantity = update)  
    return redirect('cart:cart_detail')
Пример #13
0
def cart_add(requset, product_id):
    cart = Cart(requset)
    #base of the product_id that is in the url we find the product from DB
    product = get_object_or_404(Product, id=product_id)
    form = CartAddProductForm(requset.POST)
    if form.is_valid():
        cd = form.cleaned_data
        #usinf def add to adding the product that is gotten from DB to cart
        cart.add(product=product,
                 product_count=cd['product_count'],
                 update_count=cd['update'])
    return redirect('cart:cart_detail')
Пример #14
0
def cart_update(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, id=product_id)
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        c_data = form.cleaned_data
        cart.add(
            product=product,
            quantity=c_data['quantity'],
            update=c_data['update'],
        )

    return redirect('cart:cart')
Пример #15
0
def cart_add(request, product_id):
    """
    maxsulotni savatga qoshish va yangilash uchun korinish qismi
    """
    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')
Пример #16
0
def cart_add(request):
    cart = Cart(request)
    product = get_object_or_404(Product, id=request.POST.get('product_id'))
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        c_data = form.cleaned_data
        cart.add(
            product=product,
            quantity=c_data['quantity'],
            update=c_data['update'],
        )

    return JsonResponse({'cart_total': len(cart)})
Пример #17
0
def cart_add(request, produit_id):
    cart = Cart(request)
    produit = get_object_or_404(Produit, id=produit_id)
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        cart.add(
            produit=produit,
            quantity=cd['quantity'],
            update_quantity=cd['update']
        )
        messages.success(request, "Produit ajouté au panier avec succès")
    return redirect('cart:cart_detail')
Пример #18
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')
Пример #19
0
def cart_add(request, product_id):
    cart = Cart(request)
    print("Tunde session key ---- ", Session.objects.all())
    print("Tunde cookie------", request.COOKIES)
    print("Tunde session key-------------------------------------- ",
          request.session.session_key)
    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')
Пример #20
0
def CartAdd(request, product_id):
    cart = Cart(request)
    print cart
    product = get_object_or_404(Product, id=product_id)
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        x = request.get_full_path()
        cd = form.cleaned_data
        cart.add(product=product, quantity=1, update_quantity=cd['update'])
    else:
        print 'lox'

    url = request.session['url']
    print x
    return redirect(url)
Пример #21
0
def cart_add(request, product_id):
    """
    Add product or update quantity in cart [[cart.py]].
    """

    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'],
                 override_quantity=cd['override'])

    return redirect('cart:cart-detail')
Пример #22
0
def cart_add(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, id=product_id)
    cart_product_form = CartAddProductForm()

    if request.POST:
        form = CartAddProductForm(request.POST)
        if form.is_valid():
            cart.add(
                product=product,
                quantity=form.cleaned_data['quantity'],
                update_quantity=form.cleaned_data['update'],
            )
        return render(request, 'store/product/detail.html', {
            'product': product,
            'cart_product_form': cart_product_form,
        })
Пример #23
0
def cart_add(request, pk):
    cart = Cart(request)
    product = get_object_or_404(Product, id_product=pk)
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        amount = cd['quantity'] + cart.check_product(pk)
        if amount <= MAX_AMOUNT and amount <= product.amount_storage:
            cart.add(product=product,
                     quantity=cd['quantity'])
        elif amount > MAX_AMOUNT:
            cart.add(product=product,
                     quantity=MAX_AMOUNT - cart.check_product(pk))
        elif amount > product.amount_storage:
            cart.add(product=product,
                     quantity=product.amount_storage - cart.check_product(pk))
        cart.save()
    return redirect('product_detail', pk=pk)
Пример #24
0
def product_add(request, product_id):
    category = None
    categories = Category.objects.all()
    products = Product.objects.filter(available=True)
    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.remove(product=product)
        cart.add(product=product, quantity=cd['quantity'], update_quantity=cd['update'])
    context = {
        'category': category,
        'categories': categories,
        'products': products,
        'cart_product_form': form
    }
    return render(request, 'shop/product/list.html', context)
Пример #25
0
def book_detail(request,slug):
    book = get_object_or_404(Book, slug= slug)
    categories = Category.objects.filter(is_active=True)
    related_books = Book.objects.filter(category=book.category)
    
    #delete oneself from the filter result and get the first four result
    related_books = related_books.exclude(id = book.id)[:4]
    
    form = CartAddProductForm()
    if request.method == 'POST':
        form = CartAddProductForm(request.POST)
        '''import pdb; pdb.set_trace()'''
        if form.is_valid():
            cd = form.cleaned_data
            cart = Cart(request)
            cart.add( book= book ,quantity = cd['quantity'])
            return HttpResponseRedirect(reverse('cart:show_cart'))
    else:
        return render(request,'catalog/book_detail.html',{'book':book,'related_books':related_books,'categories':categories,'form':form})
Пример #26
0
def ProductView(request, id):
    from stores.models import Store
    from cart.cart import Cart

    product=get_object_or_404(Product, id=id)
    if type(product.owner)==Store:
        cart_product_form=CartAddProductForm(request.POST)
        store=get_object_or_404(Store, id=product.owner.id)
        cart_id=str(request.user)+str(product.owner.id)
        context={
            'cart_product_form':cart_product_form,
            'product':product,
            'store_id':product.owner.id,
            'store':store,
            'cart_id':cart_id
        }
        
        if cart_product_form.is_valid():
            
            cd=cart_product_form.cleaned_data
            cart=Cart(request, cart_id)

            cart.add(product=product, 
                    quantity=cd['quantity'], 
                    override_quantity=cd['override'])
            

            return redirect('cart:cart_detail', 
                    cart_id=cart_id, 
                    store_id=product.owner.id)
        print('an error')
        return render(request, 'stores/product_detail.html', context)
    else:
        context={

            'product':product
        }
        return render(request, 'products/product.html', context)
Пример #27
0
 def test_cart_form_with_no_quantity(self):
     form = CartAddProductForm({})
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors, {
         'quantity': ['Это поле обязательно.'],
     })
Пример #28
0
 def test_cart_quantity_invalid_form(self):
     data = {'quantity': 0}
     form = CartAddProductForm(data=data)
     self.assertFalse(form.is_valid())
Пример #29
0
 def test_form_without_update(self):
     form_data = {'quantity':100}
     form = CartAddProductForm(data=form_data)
     self.assertTrue(form.is_valid())
Пример #30
0
 def test_form_is_invalid(self):
     form_data = {'quantity':'foo', 'update':'bar'}
     form = CartAddProductForm(data=form_data)
     self.assertFalse(form.is_valid())
Пример #31
0
 def test_form(self):
     form_data = {'quantity':100, 'update':True}
     form = CartAddProductForm(data=form_data)
     self.assertTrue(form.is_valid())
Пример #32
0
 def test_cart_form(self):
     form = CartAddProductForm(data={'quantity': 15})
     self.assertTrue(form.is_valid())