def get(self, request, *args, **kwargs): product_slug = kwargs.get('slug') product = Product.objects.get(slug=product_slug) cart = Cart(request) cart.add_product(product=product) messages.add_message(request, messages.INFO, '{} добавлен в корзину'.format(product.title)) return HttpResponseRedirect('/cart/')
def test_complete_valid_cart(self): prods = ProductSearch(1).query() c = Cart() for prod in prods: c.add_product(prod, prod.inventory_count) self.assertTrue(c.complete_cart())
def cart_add(request, pk): cart = Cart(request) product = get_object_or_404(Product, pk=pk) form = AddProductForm(request.POST) if form.is_valid(): cd = form.cleaned_data cart.add_product(product=product, quantity=cd['quantity']) return redirect('product-list')
def test_remove_one_of_product(self): water = ProductSearch(title="Water").query()[0] c = Cart() c.add_product(product=water, qty=3) self.assertEqual(c.remove_product(water, 1), 2) self.assertEqual(len(c.entries), 1) self.assertEqual(c.entries[water.id].qty, 2) self.assertEqual(c.total, water.price * 2)
def test_complete_invalid_cart(self): water = ProductSearch(title="Water").query()[0] c = Cart() c.add_product(water, 5) prods = ProductSearch(1).query() for prod in prods: c.add_product(prod, prod.inventory_count) water.purchase(water.inventory_count) self.assertFalse(c.complete_cart())
def test_add_product_multiple(self): water = ProductSearch(title="Water").query()[0] laptop = ProductSearch(title="Laptop").query()[0] c = Cart() self.assertEqual(c.add_product(product=water, qty=3), 3) self.assertEqual(c.add_product(product=laptop, qty=10), 10) self.assertEqual(c.entries[water.id].qty, 3) self.assertEqual(c.entries[laptop.id].qty, 10) self.assertEqual(c.total, laptop.price * 10 + water.price * 3) self.assertEqual(len(c.entries), 2)
def test_remove_more_than_entry_qty(self): laptop = ProductSearch(title="Laptop").query()[0] water = ProductSearch(title="Water").query()[0] c = Cart() c.add_product(laptop, 10) c.add_product(water, 43) self.assertEqual(c.remove_product(laptop, 15), 0) self.assertEqual(len(c.entries), 1) self.assertEqual(c.total, water.price * 43)
def card_add(request, product_id): cart = Cart(request) product = get_object_or_404(Product, id=product_id) form_cart = CardAddProductForm(request.POST) if form_cart.is_valid(): cd = form_cart.cleaned_data if product.product_stock < cd['count_product']: messages.add_message( request, messages.INFO, 'Извините на складе только %d штук' % product.product_stock) return redirect('cart:cart_detail') cart.add_product(product=product, count_product=cd['count_product'], update_count=cd['update_product']) return redirect('cart:cart_detail')
def test_remove_all_product(self): water = ProductSearch(title="Water").query()[0] c = Cart() self.assertEqual(c.add_product(water), 1) self.assertEqual(c.remove_product(water), 0) self.assertEqual(len(c.entries), 0) self.assertEqual(c.total, 0)
def test_add_more_than_available(self): rug = ProductSearch(title="Persian Rug").query()[0] c = Cart() self.assertEqual(c.add_product(product=rug, qty=5), 2) self.assertEqual(len(c.entries), 1) self.assertEqual(c.entries[rug.id].qty, 2) self.assertEqual(c.total, rug.price * 2)
def test_add_product_simple(self): water = ProductSearch(title="Water").query()[0] c = Cart() self.assertEqual(c.add_product(water), 1) self.assertEqual(len(c.entries), 1) for key, entry in c.entries.items(): self.assertEqual(key, entry.product.id) self.assertTrue(entry.qty <= water.inventory_count) self.assertEqual(entry.product.title, "Water") self.assertEqual(entry.qty, 1) self.assertEqual(c.total, 1.50)
def card_add_index(request, product_id): try: cart = Cart(request) product = get_object_or_404(Product, id=product_id) try: if product.product_stock == 0: messages.add_message(request, messages.INFO, "Нет в наличие") return redirect('cart:cart_detail') if cart.cart[str( product_id)]['count_product'] >= product.product_stock: messages.add_message( request, messages.INFO, 'Извините на складе только %d штук' % product.product_stock) return redirect('cart:cart_detail') except KeyError: pass cart.add_product(product=product) # cart.cart[str(product.id)]['count_product'] += 1 except ObjectDoesNotExist: raise Http404 return redirect('cart:cart_detail')