예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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
예제 #8
0
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