def cancel_active_requests(self, requester_id): for request in self.list_active_per_user(requester_id): request.status = "canceled" if hasattr(request, "driver_id") and request.driver_id: Helpers.dispatch( "notify_driver_request_canceled", "Request canceled: %s" % request.serialize() ) self.save(request)
def create_request(self, to_obj, **args): if isinstance(to_obj, dict): to_obj = self.to_class(**to_obj) # check if user already has an active request active_requests = list(self.list_active_per_user(to_obj.requester_id)) if len(active_requests) > 0: raise UserHasActiveRequest() result = self.create(to_obj, **args) try: # send message to external service to find and notify drivers # to meet the request Helpers.dispatch( "find_and_notify_drivers", "New driver request: %s" % result.serialize() ) return result except Exception as e: self.cancel_active_requests(to_obj.requester_id) raise e