119 lines
3.9 KiB
Python
119 lines
3.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
RBAC path registration for pipeline-sdlc module.
|
|
Run: cd ~/repos/sage && ./py3/bin/python ~/repos/pipeline-sdlc/scripts/load_path.py
|
|
"""
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
|
|
MOD = "pipeline_sdlc"
|
|
|
|
PATHS_ANY = [
|
|
f"/{MOD}/index.ui",
|
|
f"/{MOD}/styles/sdlc.css",
|
|
]
|
|
|
|
PATHS_LOGINED = [
|
|
f"/{MOD}",
|
|
f"/{MOD}/sd_project",
|
|
f"/{MOD}/sd_project/index.ui",
|
|
f"/{MOD}/sd_project/get_sd_project_list.dspy",
|
|
f"/{MOD}/sd_project/add_sd_project_list.dspy",
|
|
f"/{MOD}/sd_project/update_sd_project_list.dspy",
|
|
f"/{MOD}/sd_project/delete_sd_project_list.dspy",
|
|
f"/{MOD}/sd_iteration",
|
|
f"/{MOD}/sd_iteration/index.ui",
|
|
f"/{MOD}/sd_iteration/get_sd_iteration_list.dspy",
|
|
f"/{MOD}/sd_iteration/add_sd_iteration_list.dspy",
|
|
f"/{MOD}/sd_iteration/update_sd_iteration_list.dspy",
|
|
f"/{MOD}/sd_iteration/delete_sd_iteration_list.dspy",
|
|
f"/{MOD}/sd_test_plan",
|
|
f"/{MOD}/sd_test_plan/index.ui",
|
|
f"/{MOD}/sd_test_plan/get_sd_test_plan_list.dspy",
|
|
f"/{MOD}/sd_test_plan/add_sd_test_plan_list.dspy",
|
|
f"/{MOD}/sd_test_plan/update_sd_test_plan_list.dspy",
|
|
f"/{MOD}/sd_test_plan/delete_sd_test_plan_list.dspy",
|
|
f"/{MOD}/sd_test_case",
|
|
f"/{MOD}/sd_test_case/index.ui",
|
|
f"/{MOD}/sd_test_case/get_sd_test_case_list.dspy",
|
|
f"/{MOD}/sd_test_case/add_sd_test_case_list.dspy",
|
|
f"/{MOD}/sd_test_case/update_sd_test_case_list.dspy",
|
|
f"/{MOD}/sd_test_case/delete_sd_test_case_list.dspy",
|
|
f"/{MOD}/sd_bug",
|
|
f"/{MOD}/sd_bug/index.ui",
|
|
f"/{MOD}/sd_bug/get_sd_bug_list.dspy",
|
|
f"/{MOD}/sd_bug/add_sd_bug_list.dspy",
|
|
f"/{MOD}/sd_bug/update_sd_bug_list.dspy",
|
|
f"/{MOD}/sd_bug/delete_sd_bug_list.dspy",
|
|
f"/{MOD}/sd_deploy_env",
|
|
f"/{MOD}/sd_deploy_env/index.ui",
|
|
f"/{MOD}/sd_deploy_env/get_sd_deploy_env_list.dspy",
|
|
f"/{MOD}/sd_deploy_env/add_sd_deploy_env_list.dspy",
|
|
f"/{MOD}/sd_deploy_env/update_sd_deploy_env_list.dspy",
|
|
f"/{MOD}/sd_deploy_env/delete_sd_deploy_env_list.dspy",
|
|
# API endpoints
|
|
f"/{MOD}/api/create_sd_project.dspy",
|
|
f"/{MOD}/api/update_sd_project.dspy",
|
|
f"/{MOD}/api/delete_sd_project.dspy",
|
|
f"/{MOD}/api/create_sd_iteration.dspy",
|
|
f"/{MOD}/api/update_sd_iteration.dspy",
|
|
f"/{MOD}/api/delete_sd_iteration.dspy",
|
|
f"/{MOD}/api/create_sd_bug.dspy",
|
|
f"/{MOD}/api/update_sd_bug.dspy",
|
|
f"/{MOD}/api/close_sd_bug.dspy",
|
|
f"/{MOD}/api/save_sd_deploy_env.dspy",
|
|
f"/{MOD}/api/get_project_options.dspy",
|
|
f"/{MOD}/api/get_iteration_options.dspy",
|
|
f"/{MOD}/api/check_iteration_bugs.dspy",
|
|
f"/{MOD}/api/submit_bug.dspy",
|
|
# Dashboard
|
|
f"/{MOD}/sd_dashboard/dashboard.ui",
|
|
]
|
|
|
|
|
|
def find_sage_root():
|
|
"""Find Sage root directory."""
|
|
for candidate in [
|
|
os.path.expanduser("~/repos/sage"),
|
|
os.path.expanduser("~/sage"),
|
|
]:
|
|
if os.path.isdir(os.path.join(candidate, "wwwroot")):
|
|
return candidate
|
|
return None
|
|
|
|
|
|
def main():
|
|
sage_root = find_sage_root()
|
|
if not sage_root:
|
|
print("ERROR: Sage root not found")
|
|
sys.exit(1)
|
|
|
|
set_perm = os.path.join(sage_root, "scripts", "set_role_perm.py")
|
|
if not os.path.exists(set_perm):
|
|
set_perm = os.path.join(sage_root, "set_role_perm.py")
|
|
|
|
if not os.path.exists(set_perm):
|
|
print(f"ERROR: set_role_perm.py not found in {sage_root}")
|
|
sys.exit(1)
|
|
|
|
python = os.path.join(sage_root, "py3", "bin", "python")
|
|
if not os.path.exists(python):
|
|
python = sys.executable
|
|
|
|
count = 0
|
|
for role, paths in [("any", PATHS_ANY), ("logined", PATHS_LOGINED)]:
|
|
for path in paths:
|
|
cmd = [python, set_perm, role, path]
|
|
result = subprocess.run(cmd, capture_output=True, text=True, cwd=sage_root)
|
|
if result.returncode == 0:
|
|
count += 1
|
|
else:
|
|
print(f"WARN: {path} ({role}): {result.stderr.strip()}")
|
|
|
|
print(f"Registered {count} paths for module '{MOD}'")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|