Пример #1
0
def create_order(request):
    cart = ShoppingCart.objects.get(SessionID=request.session.session_key)
    itemsincart = cart.ItemsInCart.all()
    user = None
    order_items = []
    total_price = 0
    for item in itemsincart:
        product = Items.objects.get(ItemID=item.ItemID_id)
        order_item = OrderContains(Quantity=item.Quantity, ItemID=product)
        product.Quantity_available -= item.Quantity
        total_price += item.Quantity * product.Price
        product.save()
        if cart.Promo is not None:
            order_item.Price = round(
                (product.Price * (1 - cart.Promo.Discount)), 2)
        else:
            order_item.Price = product.Price
        order_item.save()
        order_items.append(order_item)
    if cart.Promo is not None:
        total_price = int(round((total_price * (1 - cart.Promo.Discount))))
    if request.user.is_authenticated:
        user = User.objects.get(id=request.user.id)
        try:  # to get user info
            shippinginfo = UserInfo.objects.get(AccountConnected=user)
        except UserInfo.DoesNotExist:
            shippinginfo = create_shipping_info(request.POST, user=user)
    else:
        shippinginfo = create_shipping_info(request.POST, user=None)
    order = Order(ShippingInfoID=shippinginfo,
                  TotalPrice=total_price)  # 'total' may be subject to change
    order.save()
    for item in order_items:
        order.ItemsInOrder.add(item)
    if user is not None:
        order.AccountConnected = user
    order.SessionConnected = Session.objects.get(
        session_key=request.session.session_key)
    order.save()
    #delete from cart
    for item in itemsincart:
        cart.ItemsInCart.remove(item)
        item.delete()
    cart.delete()
    return order.id