Beispiel #1
0
 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)
Beispiel #2
0
    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