def create_product(request): if request.method == 'GET': form = ProductForm() return render(request, 'products.html', context={'form': form}) elif request.method == 'POST': form = ProductForm(request.POST) if form.is_valid(): form.save() return render(request, 'congratulation.html') else: return render(request, 'products.html', context={"form": form})
def product(request, product_id): """ Product endpoint with information and ability to buy. :param request: :param product_id: id product from Product model. :return: for GET - product information page for POST - save product in user basket and redirect to basket. """ product = Product.objects.filter(id=product_id).first() if request.method == 'GET': quantity_form = ProductForm() return render(request, 'product.html', {'product': product, 'quantity_form': quantity_form}) elif request.method == 'POST': quantity_form = ProductForm(request.POST) if not quantity_form.is_valid(): return HttpResponse(status=404) quantity = quantity_form.cleaned_data["quantity"] if request.user.is_authenticated: user_id = request.session.get('_auth_user_id') user = User.objects.get(pk=user_id) basket = Basket.objects.filter(user=user).first() basket_item = BasketItem.objects.filter(basket=basket, product=product).first() if basket_item is None: BasketItem.objects.create(basket=basket, product=product, quantity=int(quantity)) else: basket_item.quantity += int(quantity) basket_item.save() return redirect('/basket/') else: return redirect('/login/') else: return HttpResponse(status=405)