def checkout(request): """checkout process""" cart = Cart(request) if request.method == 'POST': form = UserInfoForm(request.POST, instance=request.user.userinfo) if form.is_valid(): form.save() order_total = cart.get_total_price() get_order = Order.objects.create(paid=False, total_price=order_total) get_userinfo = UserInfo.objects.get(user=request.user) get_order.user_info = get_userinfo get_order.save() for item in cart: create_item = OrderItem.objects.create( order=get_order, product=item['product'], price=item['price'], quantity=item['quantity'], ) cart.stock_management(item['product'], item['quantity']) cart.clear() return redirect('home:dashboard') form = UserInfoForm(instance=request.user.userinfo) context = { 'form': form, } return render(request, 'orders/checkout.html', context)
def remove(request): cart = Cart(request) product_id = int(request.GET.get('product_id')) product = Product.objects.get(id=product_id) cart.remove(product) context = { 'cart_len': len(cart), 'total_price': cart.get_total_price(), } return JsonResponse(context)
def order_submit(request): user = request.user cart = Cart(request) if len(cart) != 0: dandp = DandP(request) delivery = Delivery.objects.get(id=int(dandp.dandp['delivery']) + 1) payment = Payment.objects.get(id=int(dandp.dandp['payment']) + 1) status_delivery = StatusDelivery.objects.get(id=1) status_payment = StatusPayment.objects.get(id=1) order = Order.objects.create(user=user.profile, email=user.email, total_price=cart.get_total_price(), delivery=delivery, status_delivery=status_delivery, payment=payment, status_payment=status_payment, full_name=user.profile.full_name, phone=user.profile.phone, postcode=user.profile.postcode, region=user.profile.region, locality=user.profile.locality, street=user.profile.street, house_nmb=user.profile.house_nmb, apartment_nmb=user.profile.apartment_nmb) for item in cart: product = Product.objects.get(id=item['product_id']) OrderItem.objects.create(order=order, product=product, price=item['price'], quantity=item['quantity'], total_price=item['cost']) product.save() cart.clear() dandp.clear() current_site = get_current_site(request) mail_subject = 'Новый заказ на сайте: ' + current_site.domain message = render_to_string('orders/order_submit_message.html', { 'domain': current_site.domain, 'order': order, }) to_email = MailToString.objects.all().first().email email = EmailMessage(mail_subject, message, to=[to_email]) email.send() context = {} return render(request, 'orders/order_submit.html', context) else: return redirect('cart')
def change_quantity(request): cart = Cart(request) product_id = int(request.GET.get('product_id')) product = Product.objects.get(id=product_id) quantity = int(request.GET.get('quantity')) cart.change_quantity(product=product, quantity=quantity) cost = int(cart.cart[str(product.id)]['cost']) context = { 'cart_len': len(cart), 'total_price': cart.get_total_price(), 'cost': cost, } return JsonResponse(context)