def create_line_section_from_json(json): line_section = models.LineSection() line_section.line = generate_pt_object_from_json(json['line']) line_section.start_point = generate_pt_object_from_json( json['start_point']) line_section.end_point = generate_pt_object_from_json(json['end_point']) if 'routes' in json: line_section.routes = generate_routes_pt_object_from_json( json['routes']) return line_section
def fill_and_add_line_section(navitia, impact_id, all_objects, pt_object_json): """ :param impact_id: impact_id to construct uri of line_section object :param all_objects: dictionary of objects to be added in this session :param pt_object_json: Flux which contains json information of pt_object :return: pt_object and modify all_objects param """ ptobject = models.PTobject() mapper.fill_from_json(ptobject, pt_object_json, mapper.object_mapping) #Here we treat all the objects in line_section like line, start_point, end_point line_section_json = pt_object_json['line_section'] ptobject.uri = ":".join((line_section_json['line']['id'], ptobject.id)) line_section = models.LineSection(ptobject.id) try: line_object = fill_and_get_pt_object(navitia, all_objects, line_section_json['line']) except exceptions.ObjectUnknown: raise exceptions.ObjectUnknown('{} {} doesn\'t exist'.format( line_section_json['line']['type'], line_section_json['line']['id'])) line_section.line = line_object try: start_object = fill_and_get_pt_object(navitia, all_objects, line_section_json['start_point']) except exceptions.ObjectUnknown: raise exceptions.ObjectUnknown('{} {} doesn\'t exist'.format( line_section_json['line']['type'], line_section_json['line']['id'])) line_section.start_point = start_object try: end_object = fill_and_get_pt_object(navitia, all_objects, line_section_json['end_point']) except exceptions.ObjectUnknown: raise exceptions.ObjectUnknown('{} {} doesn\'t exist'.format( line_section_json['line']['type'], line_section_json['line']['id'])) line_section.end_point = end_object #Here we manage routes in line_section #"routes":[{"id":"route:MTD:9", "type": "route"}, {"id":"route:MTD:Nav23", "type": "route"}] if 'routes' in line_section_json: for route in line_section_json["routes"]: try: route_object = fill_and_get_pt_object(navitia, all_objects, route, True) line_section.routes.append(route_object) except exceptions.ObjectUnknown: raise exceptions.ObjectUnknown('{} {} doesn\'t exist'.format( route['type'], route['id'])) #Here we manage via in line_section #"via":[{"id":"stop_area:MTD:9", "type": "stop_area"}, {"id":"stop_area:MTD:Nav23", "type": "stop_area"}] if 'via' in line_section_json: for via in line_section_json["via"]: try: via_object = fill_and_get_pt_object(navitia, all_objects, via, True) line_section.via.append(via_object) except exceptions.ObjectUnknown: raise exceptions.ObjectUnknown('{} {} doesn\'t exist'.format( via['type'], via['id'])) #Fill sens from json if 'sens' in line_section_json: line_section.sens = line_section_json["sens"] #Fill wordings from json #"meta":[{"key":"direction", "value": "1234"}, {"key":"direction", "value": "5678"}] if 'metas' in line_section_json: try: metas = {} metas['wordings'] = line_section_json['metas'] manage_wordings(line_section, metas) except exceptions.InvalidJson: raise ptobject.insert_line_section(line_section) return ptobject