pipeline-sdlc/scripts/load_path.py

148 lines
5.2 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
"""RBAC path registration for pipeline-sdlc module."""
import os, sys, subprocess
MOD = "pipeline-sdlc"
PATHS_ANY = [
f"/{MOD}/index.ui",
]
PATHS_LOGINED = [
f"/{MOD}",
# Dashboard
f"/{MOD}/sd_dashboard/index.ui",
f"/{MOD}/sd_dashboard/dashboard_data.dspy",
# Projects
f"/{MOD}/sd_projects/index.ui",
f"/{MOD}/sd_projects/get_sd_projects.dspy",
f"/{MOD}/sd_projects/add_sd_projects.dspy",
f"/{MOD}/sd_projects/update_sd_projects.dspy",
f"/{MOD}/sd_projects/delete_sd_projects.dspy",
f"/{MOD}/sd_project_list/index.ui",
# Iterations
f"/{MOD}/sd_iterations/index.ui",
f"/{MOD}/sd_iterations/get_sd_iterations.dspy",
f"/{MOD}/sd_iterations/add_sd_iterations.dspy",
f"/{MOD}/sd_iterations/update_sd_iterations.dspy",
f"/{MOD}/sd_iterations/delete_sd_iterations.dspy",
f"/{MOD}/sd_iteration_list/index.ui",
# Test Plans
f"/{MOD}/sd_test_plans/index.ui",
f"/{MOD}/sd_test_plans/get_sd_test_plans.dspy",
f"/{MOD}/sd_test_plans/add_sd_test_plans.dspy",
f"/{MOD}/sd_test_plans/update_sd_test_plans.dspy",
f"/{MOD}/sd_test_plans/delete_sd_test_plans.dspy",
f"/{MOD}/sd_test_plan_list/index.ui",
# Test Cases
f"/{MOD}/sd_test_cases/index.ui",
f"/{MOD}/sd_test_cases/get_sd_test_cases.dspy",
f"/{MOD}/sd_test_cases/add_sd_test_cases.dspy",
f"/{MOD}/sd_test_cases/update_sd_test_cases.dspy",
f"/{MOD}/sd_test_cases/delete_sd_test_cases.dspy",
f"/{MOD}/sd_test_case_list/index.ui",
# Bugs
f"/{MOD}/sd_bugs/index.ui",
f"/{MOD}/sd_bugs/get_sd_bugs.dspy",
f"/{MOD}/sd_bugs/add_sd_bugs.dspy",
f"/{MOD}/sd_bugs/update_sd_bugs.dspy",
f"/{MOD}/sd_bugs/delete_sd_bugs.dspy",
f"/{MOD}/sd_bug_list/index.ui",
# Deploy Envs
f"/{MOD}/sd_deploy_envs/index.ui",
f"/{MOD}/sd_deploy_envs/get_sd_deploy_envs.dspy",
f"/{MOD}/sd_deploy_envs/add_sd_deploy_envs.dspy",
f"/{MOD}/sd_deploy_envs/update_sd_deploy_envs.dspy",
f"/{MOD}/sd_deploy_envs/delete_sd_deploy_envs.dspy",
f"/{MOD}/sd_deploy_env_list/index.ui",
# Review
f"/{MOD}/sd_review/index.ui",
# API
f"/{MOD}/api/bug_close.dspy",
f"/{MOD}/api/bug_confirm.dspy",
f"/{MOD}/api/check_iteration_bugs.dspy",
f"/{MOD}/api/env_verify.dspy",
f"/{MOD}/api/get_iteration_options.dspy",
f"/{MOD}/api/get_project_options.dspy",
f"/{MOD}/api/get_test_plan_options.dspy",
f"/{MOD}/api/submit_bug.dspy",
f"/{MOD}/api/sd_bug_create.dspy",
f"/{MOD}/api/sd_bug_update.dspy",
f"/{MOD}/api/sd_bug_delete.dspy",
f"/{MOD}/api/sd_case_create.dspy",
f"/{MOD}/api/sd_case_update.dspy",
f"/{MOD}/api/sd_case_delete.dspy",
f"/{MOD}/api/sd_env_create.dspy",
f"/{MOD}/api/sd_env_update.dspy",
f"/{MOD}/api/sd_env_delete.dspy",
f"/{MOD}/api/sd_iter_create.dspy",
f"/{MOD}/api/sd_iter_update.dspy",
f"/{MOD}/api/sd_iter_delete.dspy",
f"/{MOD}/api/sd_plan_create.dspy",
f"/{MOD}/api/sd_plan_update.dspy",
f"/{MOD}/api/sd_plan_delete.dspy",
f"/{MOD}/api/sd_proj_create.dspy",
f"/{MOD}/api/sd_proj_update.dspy",
f"/{MOD}/api/sd_proj_delete.dspy",
# Search data sources
f"/{MOD}/api/get_search_bug_status.dspy",
f"/{MOD}/api/get_search_case_status.dspy",
f"/{MOD}/api/get_search_case_type.dspy",
f"/{MOD}/api/get_search_env_status.dspy",
f"/{MOD}/api/get_search_env_type.dspy",
f"/{MOD}/api/get_search_iteration_status.dspy",
f"/{MOD}/api/get_search_iteration_type.dspy",
f"/{MOD}/api/get_search_plan_status.dspy",
f"/{MOD}/api/get_search_plan_type.dspy",
f"/{MOD}/api/get_search_priority.dspy",
f"/{MOD}/api/get_search_project_type.dspy",
f"/{MOD}/api/get_search_reporter_type.dspy",
f"/{MOD}/api/get_search_severity.dspy",
f"/{MOD}/api/get_search_status.dspy",
# Workspace 文件浏览/编辑
f"/{MOD}/api/workspace_tree.dspy",
f"/{MOD}/api/workspace_files.dspy",
f"/{MOD}/api/workspace_open.dspy",
f"/{MOD}/api/workspace_file.dspy",
f"/{MOD}/api/workspace_upload.dspy",
f"/{MOD}/api/workspace_delete.dspy",
f"/{MOD}/api/workspace_popup.dspy",
f"/{MOD}/workspace_edit.xterm",
]
def find_app_root():
# 从 scripts/ 向上逐层查找 set_role_perm.py位于 pipeline-app 根目录)
d = os.path.dirname(os.path.abspath(__file__))
for _ in range(6):
if os.path.isfile(os.path.join(d, "set_role_perm.py")):
return d
parent = os.path.dirname(d)
if parent == d:
break
d = parent
return None
def main():
root = find_app_root()
if not root:
print("ERROR: pipeline root not found")
sys.exit(1)
set_perm = os.path.join(root, "set_role_perm.py")
py = sys.executable
count = 0
for role, paths in [("any", PATHS_ANY), ("logined", PATHS_LOGINED)]:
for path in paths:
cmd = [py, set_perm, role, path]
r = subprocess.run(cmd, capture_output=True, text=True, cwd=root)
if r.returncode == 0:
count += 1
else:
print(f" WARN: {path} -> {r.stderr.strip()[-80:]}")
print(f"Registered {count}/{len(PATHS_ANY)+len(PATHS_LOGINED)} paths for {MOD}")
if __name__ == "__main__":
main()