def send_message(ride, message): logging.info(u"send_message '%s' to ride: %s" % (message, ride.id)) try: station = ride.station assert station, "ride [%s] is not assigned to a station" % ride.id assert station.fleet_station_id, "station %s has no fleet_station_id" % ride.station.name assert ride.dn_fleet_manager_id, "ride [%s] is not associated with a fleet manager" % ride.id assert ride.taxi_number, "ride [%s] is not associated with a taxi number" % ride.id ride_fm = FleetManager.by_id(ride.dn_fleet_manager_id) result = ride_fm.send_message(message, ride.station.fleet_station_id, ride.taxi_number) # log a RideEvent about his message rp = get_ride_position(ride) e = RideEvent(pickmeapp_ride=None, shared_ride=ride, status=FleetManagerRideStatus.MESSAGE_SENT, raw_status=message, lat=rp.lat if rp else None, lon=rp.lon if rp else None, taxi_id=ride.taxi_number, timestamp=default_tz_now()) e.save() return result except Exception, e: logging.error(traceback.format_exc()) return False
def get_ride(ride): try: assert ride.dn_fleet_manager_id, "ride [%s] is not associated with a fleet manager" % ride.id ride_fm = FleetManager.by_id(ride.dn_fleet_manager_id) fmr = ride_fm.get_ride(ride.id) return fmr except Exception, e: logging.error(traceback.format_exc()) return None
def cancel_ride(ride): logging.info("[cancel_ride] ride = '%s'" % ride) try: assert ride.dn_fleet_manager_id, "ride [%s] is not associated with a fleet manager" % ride.id ride_fm = FleetManager.by_id(ride.dn_fleet_manager_id) result = bool(ride_fm.cancel_ride(ride.uuid)) logging.info("[cancel_ride] result = '%s'" % result) return result except Exception, e: logging.error(traceback.format_exc()) return False
def create_ride(ride): logging.info("[create_ride] ride = '%s'" % ride) try: station = ride.station assert station, "ride [%s] is not assigned to a station" % ride.id assert station.fleet_station_id, "station %s has no fleet_station_id" % ride.station.name assert ride.dn_fleet_manager_id, "ride [%s] is not associated with a fleet manager" % ride.id # refresh uuid so that we can re-insert this ride into fleet_manager db without conflict ride.update(uuid=get_uuid()) ride_fm = FleetManager.by_id(ride.dn_fleet_manager_id) result = ride_fm.create_ride(ride, ride.station, taxi_number=ride.taxi_number) return bool(result) except Exception, e: logging.error(traceback.format_exc()) return False