示例#1
0
def complete_ride(request_id):
    """
    Marks a ride request as completed.
    :param request_id:
    :return:
    """
    print "Going to mark the ride with request id {request_id} as COMPLETED".format(request_id=request_id)
    updated_args = {
        "req_status": ReqStatus.COMPLETED,
        "completed_at": datetime.utcnow()
    }
    Request.filter_and_update(filter_args={"id": request_id}, updated_args=updated_args)
示例#2
0
def serve_request(driver_id, request_id):
    """
    Responsible for serving a request(If not served in past, i.e. waiting request) from driver app. And schedule a completion
    job for this request, at ```now + RIDE_COMPLETION_DURATION_IN_SEC```
    :param driver_id:
    :param request_id:
    :return: status & message
    """
    from services.taxi_scheduler import schedule
    from taxi import app

    try:
        updated_args = {
            "req_status": ReqStatus.ONGOING,
            "driver_id": driver_id,
            "picked_up": datetime.utcnow()
        }

        request = Request.filter_and_update(filter_args={"id": request_id, "req_status": ReqStatus.WAITING}, updated_args=updated_args)
        if request:
            schedule(app.config['RIDE_COMPLETION_DURATION_IN_SEC'], complete_ride, (request_id,))
        else:
            res = {"status": "warning", "message": "No such request found or request may already be selected/served."}
            return res
    except Exception as e:
        print e
        res = {"status": "error", "message": "Couldn't serve request."}
        return res
    res = {
        "status": "success",
        "message": "Accepted request successfully."
    }
    return res