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)
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