Esempio n. 1
0
def serialize_shared_ride(ride):
    order_infos = {}
    for order in ride.orders.all():
        order_infos[order.id] = {
            'num_seats':
            order.num_seats,
            AlgoField.PRICE_SHARING_TARIFF1:
            order.price_data.for_tariff_type(TARIFFS.TARIFF1),
            AlgoField.PRICE_SHARING_TARIFF2:
            order.price_data.for_tariff_type(TARIFFS.TARIFF2)
        }

    result = {
        AlgoField.RIDE_ID:
        ride.id,
        AlgoField.RIDE_POINTS: [
            serialize_ride_point(rp)
            for rp in sorted(ride.points.all(), key=lambda p: p.stop_time)
        ],
        AlgoField.ORDER_INFOS:
        order_infos,
        AlgoField.COST_LIST_TARIFF1:
        ride.cost_data.for_tariff_type(TARIFFS.TARIFF1),
        AlgoField.COST_LIST_TARIFF2:
        ride.cost_data.for_tariff_type(TARIFFS.TARIFF2)
    }
    return clean_values(result)
Esempio n. 2
0
def serialize_order_settings(order_settings):
    result = {
        "id":
        NEW_ORDER_ID,
        "num_seats":
        order_settings.num_seats,
        "from_address":
        order_settings.pickup_address.formatted_address,
        "from_city":
        to_algo_city_name(order_settings.pickup_address.city_name),
        "from_area":
        get_pricing_area_name(order_settings.pickup_address.lat,
                              order_settings.pickup_address.lng),
        "from_lat":
        order_settings.pickup_address.lat,
        "from_lon":
        order_settings.pickup_address.lng,
        "to_address":
        order_settings.dropoff_address.formatted_address,
        "to_city":
        to_algo_city_name(order_settings.dropoff_address.city_name),
        "to_area":
        get_pricing_area_name(order_settings.dropoff_address.lat,
                              order_settings.dropoff_address.lng),
        "to_lat":
        order_settings.dropoff_address.lat,
        "to_lon":
        order_settings.dropoff_address.lng,
    }

    return clean_values(result)
Esempio n. 3
0
def serialize_ride_point(ride_point):
    result = {
        AlgoField.TYPE: "e%s" % StopType.get_name(ride_point.type).title(),
        AlgoField.POINT_ADDRESS: {
            AlgoField.LAT: ride_point.lat,
            AlgoField.LNG: ride_point.lon,
            AlgoField.ADDRESS: ride_point.address,
            AlgoField.CITY: ride_point.city_name,
            AlgoField.AREA: get_pricing_area_name(ride_point.lat, ride_point.lon),
        },
        AlgoField.ORDER_IDS: [o.id for o in ride_point.orders]
    }

    return clean_values(result)
Esempio n. 4
0
def serialize_ride_point(ride_point):
    result = {
        AlgoField.TYPE: "e%s" % StopType.get_name(ride_point.type).title(),
        AlgoField.POINT_ADDRESS: {
            AlgoField.LAT: ride_point.lat,
            AlgoField.LNG: ride_point.lon,
            AlgoField.ADDRESS: ride_point.address,
            AlgoField.CITY: ride_point.city_name,
            AlgoField.AREA: get_pricing_area_name(ride_point.lat,
                                                  ride_point.lon),
        },
        AlgoField.ORDER_IDS: [o.id for o in ride_point.orders]
    }

    return clean_values(result)
Esempio n. 5
0
def serialize_order(order):
    result = {
        "id": order.id,
        "num_seats": order.num_seats,
        "from_address": order.from_street_address,
        "from_area": get_pricing_area_name(order.from_lat, order.from_lon),
        "from_city": to_algo_city_name(order.from_city.name),
        "from_lat": order.from_lat,
        "from_lon": order.from_lon,
        "to_address": order.to_street_address,
        "to_area": get_pricing_area_name(order.to_lat, order.to_lon),
        "to_city": to_algo_city_name(order.to_city.name),
        "to_lat": order.to_lat,
        "to_lon": order.to_lon
    }

    return clean_values(result)
Esempio n. 6
0
def serialize_shared_ride(ride):
    order_infos = {}
    for order in ride.orders.all():
        order_infos[order.id] = {
            'num_seats': order.num_seats,
            AlgoField.PRICE_SHARING_TARIFF1: order.price_data.for_tariff_type(TARIFFS.TARIFF1),
            AlgoField.PRICE_SHARING_TARIFF2: order.price_data.for_tariff_type(TARIFFS.TARIFF2)
        }

    result = {
        AlgoField.RIDE_ID           : ride.id,
        AlgoField.RIDE_POINTS       : [serialize_ride_point(rp) for rp in sorted(ride.points.all(), key=lambda p: p.stop_time)],
        AlgoField.ORDER_INFOS       : order_infos,
        AlgoField.COST_LIST_TARIFF1 : ride.cost_data.for_tariff_type(TARIFFS.TARIFF1),
        AlgoField.COST_LIST_TARIFF2 : ride.cost_data.for_tariff_type(TARIFFS.TARIFF2)
    }
    return clean_values(result)
Esempio n. 7
0
def serialize_order_settings(order_settings):
    result = {
        "id": NEW_ORDER_ID,
        "num_seats": order_settings.num_seats,
        "from_address": order_settings.pickup_address.formatted_address,
        "from_city": to_algo_city_name(order_settings.pickup_address.city_name),
        "from_area": get_pricing_area_name(order_settings.pickup_address.lat, order_settings.pickup_address.lng),
        "from_lat": order_settings.pickup_address.lat,
        "from_lon": order_settings.pickup_address.lng,
        "to_address": order_settings.dropoff_address.formatted_address,
        "to_city": to_algo_city_name(order_settings.dropoff_address.city_name),
        "to_area": get_pricing_area_name(order_settings.dropoff_address.lat, order_settings.dropoff_address.lng),
        "to_lat": order_settings.dropoff_address.lat,
        "to_lon": order_settings.dropoff_address.lng,
    }

    return clean_values(result)
Esempio n. 8
0
def serialize_order(order):
    result = {
        "id": order.id,
        "num_seats": order.num_seats,
        "from_address": order.from_street_address,
        "from_area": get_pricing_area_name(order.from_lat, order.from_lon),
        "from_city": to_algo_city_name(order.from_city.name),
        "from_lat": order.from_lat,
        "from_lon": order.from_lon,
        "to_address": order.to_street_address,
        "to_area": get_pricing_area_name(order.to_lat, order.to_lon),
        "to_city": to_algo_city_name(order.to_city.name),
        "to_lat": order.to_lat,
        "to_lon": order.to_lon
    }

    return clean_values(result)