コード例 #1
0
 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/')
コード例 #2
0
ファイル: test.py プロジェクト: brownj85/marketplace
    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())
コード例 #3
0
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')
コード例 #4
0
ファイル: test.py プロジェクト: brownj85/marketplace
    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)
コード例 #5
0
ファイル: test.py プロジェクト: brownj85/marketplace
    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())
コード例 #6
0
ファイル: test.py プロジェクト: brownj85/marketplace
    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)
コード例 #7
0
ファイル: test.py プロジェクト: brownj85/marketplace
    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)
コード例 #8
0
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')
コード例 #9
0
ファイル: test.py プロジェクト: brownj85/marketplace
    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)
コード例 #10
0
ファイル: test.py プロジェクト: brownj85/marketplace
    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)
コード例 #11
0
ファイル: test.py プロジェクト: brownj85/marketplace
    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)
コード例 #12
0
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')