def update_vehicle_position(agency_id): vehicle_position_json = client.get_vehicle_position(agency_id).json() if 'entity' in vehicle_position_json: entities = EntityCreator().create_vehicle_position( vehicle_position_json) data = {'actionType': 'APPEND', 'entities': entities} update_entities(f'/agencies/{agency_id}', json.dumps(data))
def update_trip_update(agency_id): trip_update_json = client.get_trip_update(agency_id).json() post_entities_length = os.environ.get(const.POST_ENTITIES_LENGTH, 3) if 'entity' in trip_update_json: entities = EntityCreator().create_trip_update(trip_update_json) for splited_entities in split_list(entities, int(post_entities_length)): data = {'actionType': 'APPEND', 'entities': splited_entities} update_entities(f'/agencies/{agency_id}', json.dumps(data))
def test_create_calendar(self): with open('./tests/test_data/test_static_data/calendar.txt', 'r') as f: calendar_list = list(csv.DictReader(f)) entities = EntityCreator().create_static_entity( calendar_list, 'calendar', lambda x: x['service_id']) assert len(entities) == 18 assert len(entities[0]) == 12 assert entities[0]['id'] == 'S000001' assert entities[0]['type'] == 'calendar'
def test_create_trip(self): with open('./tests/test_data/test_static_data/trips.txt', 'r') as f: trip_list = list(csv.DictReader(f)) entities = EntityCreator().create_static_entity( trip_list, 'trip', lambda x: x['trip_id']) assert len(entities) == 596 assert len(entities[0]) == 15 assert entities[0]['id'] == 'T0702000001' assert entities[0]['type'] == 'trip'
def test_create_route(self): with open('./tests/test_data/test_static_data/routes.txt', 'r') as f: route_list = list(csv.DictReader(f)) entities = EntityCreator().create_static_entity( route_list, 'route', lambda x: x['route_id']) assert len(entities) == 147 assert len(entities[0]) == 12 assert entities[0]['id'] == 'R070200001000000' assert entities[0]['type'] == 'route'
def test_create_stop(self): with open('./tests/test_data/test_static_data/stops.txt', 'r') as f: stop_list = list(csv.DictReader(f)) entities = EntityCreator().create_static_entity( stop_list, 'stop', lambda x: x['stop_id']) assert len(entities) == 2002 assert len(entities[0]) == 15 assert entities[0]['id'] == 'S0702000001' assert entities[0]['type'] == 'stop'
def test_create_fare_rules(self): with open('./tests/test_data/test_static_data/fare_rules.txt', 'r') as f: fare_rules_list = list(csv.DictReader(f)) entities = EntityCreator().create_static_entity( fare_rules_list, 'fare_attribute', lambda x: f"{x['fare_id']}") assert len(entities) == 63454 assert len(entities[0]) == 7 assert entities[0]['id'] == 'F07020002100' assert entities[0]['type'] == 'fare_attribute'
def test_create_calendar_date(self): with open('./tests/test_data/test_static_data/calendar_dates.txt', 'r') as f: calendar_date_list = list(csv.DictReader(f)) entities = EntityCreator().create_static_entity( calendar_date_list, 'calendar_date', lambda x: f"{x['service_id']}_{x['date']}") assert len(entities) == 261 assert len(entities[0]) == 5 assert entities[0]['id'] == 'S000002_20190715' assert entities[0]['type'] == 'calendar_date'
def test_create_stop_time(self): with open('./tests/test_data/test_static_data/stop_times.txt', 'r') as f: stop_list = list(csv.DictReader(f)) entities = EntityCreator().create_static_entity( stop_list, 'stop_time', lambda x: f"{x['trip_id']}_{x['stop_id']}") assert len(entities) == 20798 assert len(entities[0]) == 12 assert entities[0]['id'] == 'T0702000001_S070200000100400' assert entities[0]['type'] == 'stop_time'
def test_create_pass_rules(self): with open('./tests/test_data/test_static_data/pass_rules.txt', 'r') as f: pass_rules_list = list(csv.DictReader(f)) entities = EntityCreator().create_static_entity( pass_rules_list, 'pass_rule', lambda x: f"{x['pass_id']}_{x['route_id']}") assert len(entities) == 286244 assert len(entities[0]) == 6 assert entities[0]['id'] == 'P070200882001_R070200001000000' assert entities[0]['type'] == 'pass_rule'
def test_create_shape(self): with open('./tests/test_data/test_static_data/shapes.txt', 'r') as f: shape_list = list(csv.DictReader(f)) entities = EntityCreator().create_static_entity( shape_list, 'shape', lambda x: f"{x['shape_id']}_{x['shape_pt_sequence']}") assert len(entities) == 1572 assert len(entities[0]) == 7 assert entities[0]['id'] == 'SP000001_0' assert entities[0]['type'] == 'shape'
def test_create_agency(self): with open('./tests/test_data/test_static_data/agency.txt', 'r') as agency_f: with open('./tests/test_data/test_static_data/agency_jp.txt', 'r') as agency_jp_f: agency_dict = dict(list(csv.DictReader(agency_f))[0]) agency_jp_dict = dict(list(csv.DictReader(agency_jp_f))[0]) agency_dict.update(agency_jp_dict) entities = EntityCreator().create_static_entity( [agency_dict], 'agency', lambda x: x['agency_id']) assert len(entities) == 1 assert len(entities[0]) == 15 assert entities[0]['id'] == '6380001020359' assert entities[0]['type'] == 'agency'
def test_create_vehicle_position(self): with open('./tests/test_data/test_vehicle_position.json', 'r') as f: json_data = json.load(f) entities = EntityCreator().create_vehicle_position(json_data) assert len(entities) == 35
def test_create_trip_update(self): with open('./tests/test_data/test_trip_update.json', 'r') as f: json_data = json.load(f) entities = EntityCreator().create_trip_update(json_data) assert len(entities) == 677
def update_entity(download_info): path = download_info['filename'] agency_id = download_info['agency_id'] entity_param_list = [ { 'filename': 'stops.txt', 'type': 'stop', 'id_rule': lambda x: x['stop_id'] }, { 'filename': 'routes.txt', 'type': 'route', 'id_rule': lambda x: x['route_id'] }, { 'filename': 'trips.txt', 'type': 'trip', 'id_rule': lambda x: x['trip_id'] }, { 'filename': 'stop_times.txt', 'type': 'stop_time', 'id_rule': lambda x: f"{x['trip_id']}_{x['stop_id']}" }, { 'filename': 'calendar.txt', 'type': 'calendar', 'id_rule': lambda x: x['service_id'] }, { 'filename': 'calendar_dates.txt', 'type': 'calendar_date', 'id_rule': lambda x: f"{x['service_id']}_{x['date']}" }, { 'filename': 'fare_attributes.txt', 'type': 'fare_attribute', 'id_rule': lambda x: f"{x['fare_id']}" }, { 'filename': 'fare_rules.txt', 'type': 'fare_rule', 'id_rule': lambda x: f"{x['fare_id']}_{x['route_id']}" }, { 'filename': 'pass_attributes.txt', 'type': 'pass_attribute', 'id_rule': lambda x: f"{x['pass_id']}" }, # { # 'filename': 'pass_rules.txt', # 'type': 'calendar_date', # 'id_rule': lambda x: f"{x['pass_id']}_{x['route_id']}" # }, # { # 'filename': 'shapes.txt', # 'type': 'shape', # 'id_rule': lambda x: f"{x['shape_id']}_{x['shape_pt_sequence']}" # } ] entity_creator = EntityCreator() # Update the agency entity with the agency_jp. agency_filename = f'output/{path}/agency.txt' agency_jp_filename = f'output/{path}/agency_jp.txt' with open(agency_filename, 'r', encoding='utf-8-sig') as agency_f: with open(agency_jp_filename, 'r', encoding='utf-8-sig') as agency_jp_f: agency_dict = dict(list(csv.DictReader(agency_f))[0]) agency_jp_list = list(csv.DictReader(agency_jp_f)) if len(agency_jp_list) != 0: agency_jp_dict = dict(agency_jp_list[0]) agency_dict.update(agency_jp_dict) entities = entity_creator.create_static_entity( [agency_dict], 'agency', lambda x: x['agency_id']) data = {'actionType': 'APPEND', 'entities': entities} orion.update_entities(f'/agencies/{agency_id}', json.dumps(data)) # Update the other entities. post_entities_length = os.environ.get(const.POST_ENTITIES_LENGTH, 3) for entity_param in entity_param_list: file_path = f'output/{path}/{entity_param["filename"]}' if os.path.exists(file_path): with open(file_path, 'r', encoding='utf-8-sig') as f: data_list = list(csv.DictReader(f)) entities = entity_creator.create_static_entity( data_list, entity_param['type'], entity_param['id_rule']) # Split entities data, Because requests can't post too many entities. for splited_entities in split_list(entities, int(post_entities_length)): data = { 'actionType': 'APPEND', 'entities': splited_entities } orion.update_entities(f'/agencies/{agency_id}', json.dumps(data))