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)
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)
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)
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)
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)