Пример #1
0
    def post(cls):
        data = request.get_json()
        items = []
        item_id_quantities = Counter(data["item_ids"])

        customer_id = get_jwt_identity()

        if OrderModel.find_customer_pending_order(customer_id):
            return {"message": HAS_ONE_ORDER_ALREADY}, 400

        for _id, count in item_id_quantities.most_common():
            item = ItemModel.find_by_id(_id)
            if not item:
                return {"message": ITEM_ID_NOT_FOUND.format(_id)}, 404
            items.append(ItemsInOrder(item_id=_id, quantity=count))

        message = data['message']
        order = OrderModel(items=items,
                           status="pending",
                           customer_id=customer_id,
                           message=message)
        order.charge_with_stripe(data["token"])
        order.save_to_db()

        return order_schema.dump(order)
Пример #2
0
 def get(cls):
     customer_id = get_jwt_identity()
     order = OrderModel.find_customer_pending_order(customer_id)
     store_order = StoreOrderModel.find_by_order_id(order.id)
     store = StoreModel.find_by_id(store_order.store_id)
     store_data = {"email": store.email, "phone1": store.phone1}
     if store.phone2:
         store_data['phone2'] = store.phone2
     return store_data, 200
Пример #3
0
    def delete(cls):
        customer_id = get_jwt_identity()
        order = OrderModel.find_customer_pending_order(customer_id)
        if not order:
            return {"message": ORDER_NOT_FOUND}, 404

        try:
            order.delete_from_db()
        except:
            return {"message": ERROR_DELETING_ORDER}, 500

        return {"message": SUCCESS_DELETING_ORDER}, 200
Пример #4
0
    def put(cls):
        customer_id = get_jwt_identity()
        order = OrderModel.find_customer_pending_order(customer_id)

        if not order:
            return {"message": ORDER_NOT_FOUND}, 404

        order.set_status("delivered")
        try:
            order.save_to_db()
        except:
            return {"message": ERROR_UPDATING_ORDER}, 500
        return {"message": SUCCESS_UPDATING_ORDER}, 200
Пример #5
0
    def get(cls):
        customer_id = get_jwt_identity()
        order = OrderModel.find_customer_pending_order(customer_id)

        if not order:
            return {"message": ORDER_NOT_FOUND}, 404

        items = fetching_order(order.order_items)
        message = order.message
        return {
            'id': order.id,
            'status': order.status,
            'items': items,
            'message': message
        }, 200