def getOrderById(request, pk):
    try:
        order = Order.objects.get(_id=pk)
        serializer = OrderSerializer(order, many=False)

        return Response(serializer.data)
    except:
        return Response({'detail': 'Order does not exists'},
                        status=status.HTTP_400_BAD_REQUEST)
Beispiel #2
0
def getOrderById(request, pk):
    user=request.user
    order=Order.objects.get(_id=pk)
    try:
        if user.is_staff or order.user == user:
            serializer=OrderSerializer(order, many=False)
            return Response(serializer.data)
        else:
            return Response({'detail':'Not authorized'}, status=status.HTTP_400_BAD_REQUEST)
    except:
        return Response({'detail':'Order does not exist'}, status=status.HTTP_400_BAD_REQUEST)
Beispiel #3
0
def addOrderItems(request):
    user = request.user
    data = request.data

    orderItems = data['orderItems']

    if orderItems and len(orderItems) == 0:
        return Response({'detail': 'No Order Items'},
                        status=status.HTTP_400_BAD_REQUEST)
    else:

        # (1) Create order

        order = Order.objects.create(user=user,
                                     paymentMethod=data['paymentMethod'],
                                     taxPrice=data['taxPrice'],
                                     shippingPrice=data['shippingPrice'],
                                     totalPrice=data['totalPrice'])

        # (2) Create shipping address

        shipping = ShippingAddress.objects.create(
            order=order,
            address=data['shippingAddress']['address'],
            city=data['shippingAddress']['city'],
            postalCode=data['shippingAddress']['postalCode'],
            country=data['shippingAddress']['country'],
        )

        # (3) Create order items adn set order to orderItem relationship
        for i in orderItems:
            product = Product.objects.get(_id=i['product'])

            item = OrderItem.objects.create(
                product=product,
                order=order,
                name=product.name,
                quantity=i['quantity'],
                price=i['price'],
                image=product.image.url,
            )

            # (4) Update stock

            product.countInStock -= item.quantity
            product.save()

            serializer = OrderSerializer(order, many=False)
            return Response(serializer.data)
Beispiel #4
0
def getOrderByID(request, pk):

    user = request.user

    try:
        order = Order.objects.get(_id=pk)
        if user.is_staff or order.user == user:
            serializer = OrderSerializer(order, many=False)
            return Response(serializer.data)
        else:
            return Response({'detail': 'Not Authorized to View This Order'},
                            status=status.HTTP_400_BAD_REQUEST)
    except:
        return Response({'detail': 'Order Does Not Exist'},
                        status=status.HTTP_400_BAD_REQUEST)
Beispiel #5
0
def addOrderItems(request):
    user = request.user
    data = request.data
    
    #   orderItems sent from front end
    orderItems = data['orderItems']

    #check if orderItems exist
    if orderItems and len(orderItems) == 0:
        return Response({'detail': 'No order items found.'}, status=status.HTTP_400_BAD_REQUEST)
    else:
        # create order
        order = Order.objects.create(
            user=user,
            paymentMethod=data['paymentMethod'],
            taxPrice=data['taxPrice'],
            shippingPrice=data['shippingPrice'],
            totalPrice=data['totalPrice']
        )
        # create shipping address
        shipping = ShippingAddress.objects.create(
            order=order,
            address=data['shippingAddress']['address'],
            city=data['shippingAddress']['city'],
            postalCode=data['shippingAddress']['postalCode'],
            country=data['shippingAddress']['country']

        )
        # create order items (add them to the database)
        for i in orderItems:
            product = Product.objects.get(_id=i['product'])
        # set orderItem relationship
            item = OrderItem.objects.create(
                product=product,
                order=order,
                name=product.name,
                qty=i['qty'],
                price=i['price'],
                image=product.image.url,
            )
            
            # update stock
            product.countInStock -= item.qty
            product.save()


        serializer = OrderSerializer(order, many=False)
        return Response(serializer.data)
def addOrderItems(request):
    user = request.user
    data = request.data 
    
    orderItems = data['orderItems']

    if orderItems and len(orderItems) == 0:
        return Response({'detail': 'No Order Items'}, status=status.HTTP_400_BAD_REQUEST)
    else:
        # (1) CREATE ORDER

        order = Order.objects.create(
            user = user,
            paymentMethod = data['paymentMethod'],
            taxPrice = data['taxPrice'],
            shippingPrice = data['shippingPrice'],
            totalPrice = data['totalPrice']
        )
        # (2) CREATE SHIPPING ADDRESS
        
        shipping = ShippingAddress.objects.create(
            order = order,
            address = data['shippingAddress']['address'],
            city = data['shippingAddress']['city'],
            postalCode = data['shippingAddress']['postalCode'],
            country = data['shippingAddress']['country']
        )

        # (3) CREATE ORDER ITEMS AND SET ORDER TO ORDERITEM RELATIONSHIP

        for i in orderItems:
            product = Product.objects.get(_id=i['product'])

            item = OrderItem.objects.create(
                product = product,
                order = order, 
                name = product.name,
                qty = i['qty'],
                price = i['price'],
                image = product.image.url,
            )
        
            # (4) UPDATE STOCK
            product.countInStock -= item.qty
            product.save()

    serializer = OrderSerializer(order, many=False)
    return Response(serializer.data)
Beispiel #7
0
def addOrderItems(request):
    user = request.user
    data = request.data

    orderItems = data["orderItems"]

    if orderItems and len(orderItems) == 0:
        return Response({'detail': 'no Order Items'},
                        status=status.HTTP_400_BAD_REQUEST)
    else:
        # Create Order
        order = Order.objects.create(user=user,
                                     paymentMethod=data["paymentMethod"],
                                     taxPrice=data["taxPrice"],
                                     shippingPrice=data["shippingPrice"],
                                     totalPrice=data["totalPrice"])

        # create shipping address
        shipping = ShippingAddress.objects.create(
            order=order,
            shippingPrice=data["shippingPrice"],
            address=data["shippingAddress"]["address"],
            city=data["shippingAddress"]["city"],
            postalCode=data["shippingAddress"]["postalCode"],
            country=data["shippingAddress"]["country"])

        # order Item
        for i in orderItems:
            product = Product.objects.get(_id=i["product"])
            orderItem = OrderItem.objects.create(
                product=product,
                order=order,
                name=product.name,
                qty=i["qty"],
                price=i["price"],
                image=product.image.url,
            )

        # Update stock
        product.countInStock -= orderItem.qty
        product.save()

        serializer = OrderSerializer(order, many=False)
        return Response(serializer.data)
Beispiel #8
0
def getFarmersOrders(request):
    user = request.user
    farmerUser = UserSerializer(user, many=False)

    #Order.orderItem_set.all()

    #Order      where order.id = OrderItem.orderid and orderItem.productId = product.id and product.user = user.userid and user=userıd
    #orderUsers = get_user_model().objects.get(id=user.id)
    #orderUsers.

    #query1= OrderItem.objects.all()

    #orders = Order.objects.filter(Q(_id_contains=query1) | Q(last_name__contains=query)

    productFilter = user.product_set.all()
    orderItem = OrderItem.objects.filter()
    orders = Order.objects.filter(user_id=user.id)
    serializer = OrderSerializer(orders, many=True)
    return Response(serializer.data)
def addOrderItems(request):
    data = request.data
    location = request.geolocation
    currency = str(location['raw_data']['currency_code']).lower()
    c = CurrencyConverter()
    convertion = round(
        c.convert(float(data['totalPrice']), 'MXN', currency.upper()), 2)
    print(convertion)
    stripe.api_key = settings.STRIPE_SECRET_KEY
    user = None
    payment_intent = None
    default_shipping_address = None
    order = None

    #Verify payment methods in stripe
    print("USER IS AUTHENTICATED: ", request.user.is_authenticated)
    orderItems = data['orderItems']
    if orderItems and len(orderItems) == 0:
        return Response({'detail': 'No order items'},
                        status=status.HTTP_400_BAD_REQUEST)
    else:
        if request.user.is_authenticated:
            user = request.user
            user_shippings = ShippingAdress.objects.filter(user=user)
            if len(user_shippings) != 0:
                for user_shipping in user_shippings:
                    if user_shipping.default == True:
                        default_shipping_address = user_shipping
                        break

        if str(data['paymentMethod']).lower() == 'stripe':
            payment_intent = stripe_payment_management(data, user, request,
                                                       convertion, currency)

        # (1) Create order

        if payment_intent:

            order = Order.objects.create(
                user=user,
                paymentMethod=data['paymentMethod'],
                taxtPrice=Decimal(data['taxtPrice']),
                shippingPrice=Decimal(data['shippingPrice']),
                totalPrice=Decimal(data['totalPrice']),
                stripe_payment_intent=payment_intent.id,
            )
        else:
            order = Order.objects.create(
                user=user,
                paymentMethod=data['paymentMethod'],
                taxtPrice=Decimal(data['taxtPrice']),
                shippingPrice=Decimal(data['shippingPrice']),
                totalPrice=Decimal(data['totalPrice']),
            )
        coupon = str(data['coupon'])
        coupon_exists = Coupon.objects.filter(code=coupon.upper()).exists()
        if coupon_exists:
            coupon = Coupon.objects.get(code=coupon.upper())
            if coupon.discount:
                order.discount = Decimal(coupon.discount)
            else:
                order.discount = Decimal(order.totalPrice) * Decimal(
                    coupon.percentage)
            order.save()
        # (2) Create shipping address

        if default_shipping_address:
            default_shipping_address.order = order
            default_shipping_address.save()
        else:
            if request.user.is_authenticated:
                shipping = ShippingAdress.objects.create(
                    user=user,
                    order=order,
                    address=data['ShippingAdress']['address'],
                    postalCode=data['ShippingAdress']['postalCode'],
                    country=data['ShippingAdress']['country'],
                    city=data['ShippingAdress']['city'],
                )
            else:
                shipping = ShippingAdress.objects.create(
                    order=order,
                    address=data['ShippingAdress']['address'],
                    postalCode=data['ShippingAdress']['postalCode'],
                    country=data['ShippingAdress']['country'],
                    city=data['ShippingAdress']['city'],
                )
                shipping.receiver_first_name = data['ShippingAdress'][
                    'receiver_first_name']
                shipping.receiver_last_name = data['ShippingAdress'][
                    'receiver_last_name']
                shipping.save()

        # (3) Create order items and set the order to  order Item  relationship
        for i in orderItems:
            product = Product.objects.get(_id=i['product'])

            item = OrderItem.objects.create(
                product=product,
                order=order,
                name=product.name,
                qty=i['qty'],
                price=i['price'],
                image=product.image.url,
            )

            # (4) update Stock
            product.countInStock -= item.qty
            product.save()

        serializer = OrderSerializer(order, many=False)
        return Response(serializer.data)
def getOrders(request):
    user = request.user
    orders = Order.objects.all()
    serializer = OrderSerializer(orders, many=True)

    return Response(serializer.data)
def getMyOrders(request):
    user = request.user
    orders = user.order_set.all()
    serializer = OrderSerializer(orders, many=True)

    return Response(serializer.data)
Beispiel #12
0
def getOrders(request):
    orders = Order.objects.all()
    serializer = OrderSerializer(orders, many=True)
    # many or single object to serialize required
    # serializer required for every model we want to return
    return Response(serializer.data)
Beispiel #13
0
def addOrderItems(request):
    user = request.user
    data = request.data

    company = ShipmentCompany.objects.get(_id=1)
    selectedBox = Box.objects.get(_id=1)

    orderItems = data['orderItems']

    if orderItems and len(orderItems) == 0:
        return Response({'detail': 'No Order Items'},
                        status=status.HTTP_400_BAD_REQUEST)
    else:
        #(1)Create Order
        order = Order.objects.create(user=user,
                                     paymentMethod=data['paymentMethod'],
                                     taxPrice=data['taxPrice'],
                                     shippingPrice=data['shippingPrice'],
                                     totalPrice=data['totalPrice'])
        #(2) Create Shipping Adress
        shipping = ShippingAddress.objects.create(
            order=order,
            address=data['shippingAddress']['address'],
            city=data['shippingAddress']['city'],
            postalCode=data['shippingAddress']['postalCode'],
            country=data['shippingAddress']['country'],
            isBoxDelivery=data['shippingAddress']['isBoxDelivery'],
        )

        #(3) Create order items and ser order to orderItem relationship
        for i in orderItems:
            product = Product.objects.get(_id=i['product'])

            item = OrderItem.objects.create(
                product=product,
                order=order,
                name=product.name,
                qty=i['qty'],
                price=i['price'],
                image=product.image.url,
            )
            #(4) Update stock
            product.countInStock -= item.qty
            product.save()

    #(5)Create Box Delivery or DirectDelivery
    if data['shippingAddress']['isBoxDelivery'] == True:
        company = ShipmentCompany.objects.get(_id=1)
        selectedBox = Box.objects.get(_id=1)
        boxDelivery = BoxDelivery.objects.create(
            shippingAddress=shipping,
            shipmentCompany=company,
            user=user,
            box=selectedBox,
        )
        boxDelivery.save()

    else:
        directDel = DirectDelivery.objects.create(
            shippingAddress=shipping,
            shipmentCompany=company,
        )

        serializer = OrderSerializer(order, many=False)
        return Response(serializer.data)