Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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')
Ejemplo n.º 4
0
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)