2022-04-17 15:14:22 +02:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
# SPDX-License-Identifier: CC0-1.0
|
|
|
|
|
2022-01-16 20:14:03 +01:00
|
|
|
from mako.template import Template
|
|
|
|
import json
|
|
|
|
|
2022-04-17 22:28:37 +02:00
|
|
|
def render(spaces, loops, template):
|
2022-04-17 15:14:22 +02:00
|
|
|
appTemplate = Template(filename=template)
|
2022-04-17 22:28:37 +02:00
|
|
|
print(appTemplate.render(s=spaces,loops=loops))
|
2022-04-17 15:14:22 +02:00
|
|
|
|
2022-04-17 22:28:37 +02:00
|
|
|
def make_hierarchy(space, room, loops):
|
2022-04-17 15:27:35 +02:00
|
|
|
try:
|
2022-04-17 22:28:37 +02:00
|
|
|
if 'children' in space:
|
|
|
|
space['children'].append(room)
|
|
|
|
else:
|
|
|
|
space['children'] = [room]
|
2022-04-17 15:27:35 +02:00
|
|
|
|
2022-04-17 22:28:37 +02:00
|
|
|
if 'children_state' in room:
|
|
|
|
for child in room['children_state']:
|
|
|
|
if ROOMS[child['state_key']]['room_id'] not in loops:
|
|
|
|
make_hierarchy(room,ROOMS[child['state_key']], loops)
|
2022-04-17 15:27:35 +02:00
|
|
|
except:
|
2022-04-17 22:28:37 +02:00
|
|
|
pass
|
2022-04-17 15:27:35 +02:00
|
|
|
|
2022-04-17 15:14:22 +02:00
|
|
|
if __name__ == '__main__':
|
|
|
|
with open('libregamingspaces.json') as f:
|
2022-04-17 15:27:35 +02:00
|
|
|
data = json.load(f)
|
2022-01-16 20:14:03 +01:00
|
|
|
|
2022-04-17 15:27:35 +02:00
|
|
|
ROOMS = {room['room_id'] : room for room in data}
|
2022-04-17 22:28:37 +02:00
|
|
|
spaces={'name':"TOP"}
|
|
|
|
loops=['!JTpfWshTKZpZiUASvP:hacklab.fi']
|
|
|
|
make_hierarchy(spaces,ROOMS['!IdUUdKALNzBLKEjvbP:matrix.org'], loops)
|
|
|
|
render(spaces, loops, './spaces.html')
|