예제 #1
0
파일: history.py 프로젝트: azime/Chaos-1
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
예제 #2
0
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