56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
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)
|
|
|
|
print(len(parsed_rooms))
|
|
return parsed_rooms
|
|
|
|
|
|
if __name__ == "__main__":
|
|
rooms = get_campus_rooms()
|
|
print(len(rooms))
|