world/scripts/load_path.py

81 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""world 模块 RBAC 路径注册脚本(显式注册,禁通配符)。
包含全部新 API/页面路径wwwroot/index.ui、menu.ui 及 wwwroot/api/*.dspy。
角色logined需登录menu.ui 为 any预登录资源
执行python scripts/load_path.py
"""
import os
import sys
MOD = 'world'
# 显式路径注册(禁止 % / * 通配符)
PATHS_LOGINED = [
'/world',
'/world/index.ui',
'/world/menu.ui',
'/world/world_list',
'/world/world_list/index.ui',
'/world/world_list/get_world_list.dspy',
'/world/world_list/add_world.dspy',
'/world/world_list/update_world.dspy',
'/world/world_list/delete_world.dspy',
'/world/api/create_world.dspy',
'/world/api/world_update.dspy',
'/world/api/world_delete.dspy',
'/world/api/get_world.dspy',
'/world/api/list_worlds.dspy',
'/world/api/set_world_mode.dspy',
'/world/api/get_search_status.dspy',
'/world/api/get_search_world_type.dspy',
]
PATHS_ANY = [
'/world/menu.ui',
]
def find_sage_root():
candidates = [
os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..')),
os.path.expanduser('~/repos/sage'),
os.path.expanduser('~/sage'),
]
for cand in candidates:
if os.path.isdir(os.path.join(cand, 'wwwroot')) and os.path.isdir(os.path.join(cand, 'py3', 'bin')):
return cand
return None
def main():
sage_root = find_sage_root()
if not sage_root:
print('ERROR: sage root not found; register paths manually in central load_path.py')
sys.exit(1)
sys.path.insert(0, os.path.join(sage_root, 'py3', 'bin'))
try:
from load_path import register_paths # noqa
except ImportError:
# 中央 load_path.py 未提供可导入函数时,输出待注册清单供人工接入
print('INFO: central load_path.py has no importable register_paths; '
'falling back to central registration file (see sage/load_path.py)')
register_paths = None
if register_paths is not None:
for p in PATHS_ANY:
register_paths(p, 'any')
for p in PATHS_LOGINED:
register_paths(p, 'logined')
print('world RBAC paths registered: %d logined, %d any'
% (len(PATHS_LOGINED), len(PATHS_ANY)))
else:
print('world RBAC paths (register in sage/load_path.py):')
for p in PATHS_LOGINED:
print(' %s logined' % p)
for p in PATHS_ANY:
print(' %s any' % p)
if __name__ == '__main__':
main()