import re from campus_api_client.campus_management_api_client import CampusManagementApiClient from backend import Config def get_campus_rooms(): cac = CampusManagementApiClient(user=Config.CAMPUS_MANAGEMENT_USER, pw=Config.CAMPUS_MANAGEMENT_PW) parsed_rooms = [] count = 0 re_string = r"^(\d\d.\d\d)?\s(.*)" re_exp = re.compile(re_string) for r in cac.get_rooms(): name = r.get('name') # print(f"## {r.get('name')}: {r.get('roomNo')}") building_number = r.get('buildingNo', None) building_name = r.get('building') if building_number is None or building_number == '': count += 1 # print(r) match = re_exp.match(building_name) if match is not None: building_number, building_name = match.groups() else: try: building_name = building_name.split(building_number)[1].strip() building_name = None if building_name == "" else building_name except IndexError: # ignore index error pass # print(f"Building No {r.get('buildingNo')}: {r.get('building')}") # print(building_name) # print(building_number) if building_number is not None and building_number != "" and name.startswith(building_number): name = name.split(building_number, 1)[1].strip() elif building_number is not None and name.startswith(f"Geb. {building_number}"): name = name.split(f"Geb. {building_number}", 1)[1].strip() room = {'name': name, 'alternate_name': r.get('internalName'), 'external_id': r.get('guid'), 'room_number': r.get('roomNo'), 'building_name': building_name, 'building_number': building_number, 'coordinates': r.get('coordinates')} parsed_rooms.append(room) return parsed_rooms if __name__ == "__main__": rooms = get_campus_rooms() print(len(rooms))