class HeaderSerializer(PbNestedSerializer): additional_informations = EnumListField(attr='additional_informations', display_none=True) display_informations = pt.VJDisplayInformationSerializer(attr='pt_display_informations') links = jsonschema.MethodField(schema_type=LinkSchema(many=True)) def get_links(self, obj): return _get_links(obj)
class SectionSerializer(PbNestedSerializer): id = jsonschema.Field(schema_type=str, display_none=True) duration = jsonschema.Field(schema_type=int, display_none=True, description='Duration of the section (seconds)') co2_emission = AmountSerializer(display_none=True) transfer_type = EnumField() departure_date_time = DateTimeField(attr='begin_date_time', description='Departure date and time of the section') arrival_date_time = DateTimeField(attr='end_date_time', description='Arrival date and time of the section') base_departure_date_time = DateTimeField(attr='base_begin_date_time', description='Base-schedule departure date and time of the section') base_arrival_date_time = DateTimeField(attr='base_end_date_time', description='Base-schedule arrival date and time of the section') to = jsonschema.MethodField(schema_type=PlaceSerializer(), attr='destination') def get_to(self, obj): if obj.HasField(str('type')): enum = obj.DESCRIPTOR.fields_by_name['type'].enum_type.values_by_number ret_value = enum[getattr(obj, 'type')].name if ret_value == 'WAITING': return None return PlaceSerializer(obj.destination).data _from = jsonschema.MethodField(schema_type=PlaceSerializer(), attr='origin', label='from') def get__from(self, obj): if obj.HasField(str('type')): enum = obj.DESCRIPTOR.fields_by_name['type'].enum_type.values_by_number ret_value = enum[getattr(obj, 'type')].name if ret_value == 'WAITING': return None return PlaceSerializer(obj.origin).data additional_informations = EnumListField(attr='additional_informations', pb_type=SectionAdditionalInformationType) geojson = SectionGeoJsonField(display_none=False, description='GeoJSON of the shape of the section') mode = NestedEnumField(attr='street_network.mode') type = SectionTypeEnum() display_informations = VJDisplayInformationSerializer(attr='pt_display_informations', display_none=False) links = jsonschema.MethodField(display_none=True, schema_type=LinkSchema(many=True)) def get_links(self, obj): response = [] if obj.HasField(str("uris")): for type_, value in obj.uris.ListFields(): response.append({"type": type_.name, "id": value}) if obj.HasField(str('pt_display_informations')): response.extend(base.make_notes(obj.pt_display_informations.notes)) return response stop_date_times = StopDateTimeSerializer(many=True) path = PathSerializer(attr="street_network.path_items", many=True, display_none=False)
class ChannelSerializer(PbNestedSerializer): content_type = jsonschema.Field(schema_type=str, display_none=True) id = jsonschema.Field(schema_type=str, display_none=True) name = jsonschema.Field(schema_type=str, display_none=True) types = EnumListField(attr='channel_types', pb_type=Channel.ChannelType) # type: ignore
class SectionSerializer(PbNestedSerializer): id = jsonschema.Field(schema_type=str, display_none=True) duration = jsonschema.Field( schema_type=int, display_none=True, description='Duration of the section (seconds)' ) co2_emission = AmountSerializer(display_none=True) transfer_type = EnumField(attr='transfer_type', pb_type=TransferType) departure_date_time = DateTimeField( attr='begin_date_time', description='Departure date and time of the section' ) arrival_date_time = DateTimeField(attr='end_date_time', description='Arrival date and time of the section') base_departure_date_time = DateTimeField( attr='base_begin_date_time', description='Base-schedule departure date and time of the section' ) base_arrival_date_time = DateTimeField( attr='base_end_date_time', description='Base-schedule arrival date and time of the section' ) data_freshness = EnumField(attr="realtime_level", pb_type=RTLevel, display_none=False) to = jsonschema.MethodField(schema_type=PlaceSerializer(), attr='destination') def get_to(self, obj): if obj.HasField(str('type')): enum = obj.DESCRIPTOR.fields_by_name['type'].enum_type.values_by_number ret_value = enum[getattr(obj, 'type')].name if ret_value == 'WAITING': return None return PlaceSerializer(obj.destination).data _from = jsonschema.MethodField(schema_type=PlaceSerializer(), attr='origin', label='from') def get__from(self, obj): if obj.HasField(str('type')): enum = obj.DESCRIPTOR.fields_by_name['type'].enum_type.values_by_number ret_value = enum[getattr(obj, 'type')].name if ret_value == 'WAITING': return None return PlaceSerializer(obj.origin).data additional_informations = EnumListField( attr='additional_informations', pb_type=SectionAdditionalInformationType ) geojson = SectionGeoJsonField(display_none=False, description='GeoJSON of the shape of the section') mode = NestedEnumField(attr='street_network.mode', pb_type=StreetNetworkMode) type = SectionTypeEnum(attr='type', pb_type=SectionType) display_informations = VJDisplayInformationSerializer(attr='pt_display_informations', display_none=False) links = jsonschema.MethodField(display_none=True, schema_type=LinkSchema(many=True)) def get_links(self, obj): response = [] if obj.HasField(str("uris")): for type_, value in obj.uris.ListFields(): response.append({"type": type_.name, "id": value}) if obj.HasField(str('pt_display_informations')): response.extend(base.make_notes(obj.pt_display_informations.notes)) if obj.HasField(str('ridesharing_information')): response.extend( [ {"type": "ridesharing_ad", "rel": l.key, "href": l.href, "internal": False} for l in obj.ridesharing_information.links ] ) return response stop_date_times = StopDateTimeSerializer(many=True) path = PathSerializer(attr="street_network.path_items", many=True, display_none=False) ridesharing_informations = RidesharingInformationSerializer( attr='ridesharing_information', display_none=False ) ridesharing_journeys = jsonschema.MethodField( schema_type=lambda: JourneySerializer(display_none=False, many=True) ) def get_ridesharing_journeys(self, obj): if not hasattr(obj, 'ridesharing_journeys') or not obj.ridesharing_journeys: return None return JourneySerializer(obj.ridesharing_journeys, display_none=False, many=True).data cycle_lane_length = PbIntField(display_none=False) elevations = ElevationSerializer(attr="street_network.elevations", many=True, display_none=False) dynamic_speeds = DynamicSpeedSerializer(attr="street_network.dynamic_speeds", many=True, display_none=False) vias = PathWaySerializer(many=True, display_none=False) street_informations = StreetInformationSerializer( attr="street_network.street_information", many=True, display_none=False )