showcase/scripts/load_path.py
yumoqing 1cce05a119 feat: showcase模块 - 产品展示平台(MVP)
- 4张数据表: posts/comments/likes/downloads
- 5种媒体类型: music/mtv/short_video/long_video/ktv
- 社交功能: 点赞(toggle)、评论(嵌套回复)
- KTV付费下载: 购买记录、下载计数
- 11个dspy API端点
- 3个CRUD管理界面(posts/comments/downloads)
- Feed流(类型筛选+分页)、作品详情(浏览计数+点赞状态)
- load_path.py RBAC权限注册
- 符合module/db-table/crud三规范
2026-06-11 14:46:02 +08:00

77 lines
2.7 KiB
Python

#!/usr/bin/env python3
"""Showcase module RBAC permission registration"""
import os, sys, subprocess
# Find Sage root
SAGE_ROOT = None
for candidate in [os.path.expanduser("~/repos/sage"), os.path.expanduser("~/sage")]:
if os.path.isdir(os.path.join(candidate, "wwwroot")):
SAGE_ROOT = candidate
break
if not SAGE_ROOT:
print("ERROR: Sage root not found")
sys.exit(1)
MOD = "showcase"
SET_PERM = os.path.join(SAGE_ROOT, "set_role_perm.py")
PY = os.path.join(SAGE_ROOT, "py3", "bin", "python")
def set_perm(role, path):
cmd = [PY, SET_PERM, role, path]
r = subprocess.run(cmd, capture_output=True, text=True)
if r.returncode != 0:
print(f" WARN: {path} -> {r.stderr.strip()}")
# Public resources (no auth needed)
PATHS_ANY = [
f"/{MOD}/showcase.css",
f"/{MOD}/showcase.js",
f"/{MOD}/menu.ui",
]
# Authenticated endpoints
PATHS_LOGINED = [
f"/{MOD}",
f"/{MOD}/index.ui",
f"/{MOD}/detail.ui",
# API endpoints
f"/{MOD}/api/showcase_feed.dspy",
f"/{MOD}/api/showcase_post_detail.dspy",
f"/{MOD}/api/showcase_post_create.dspy",
f"/{MOD}/api/showcase_post_update.dspy",
f"/{MOD}/api/showcase_post_delete.dspy",
f"/{MOD}/api/showcase_comment_create.dspy",
f"/{MOD}/api/showcase_comment_update.dspy",
f"/{MOD}/api/showcase_comment_delete.dspy",
f"/{MOD}/api/showcase_comments_list.dspy",
f"/{MOD}/api/showcase_like_toggle.dspy",
f"/{MOD}/api/showcase_download_purchase.dspy",
# CRUD generated directories
f"/{MOD}/showcase_posts_list",
f"/{MOD}/showcase_posts_list/index.ui",
f"/{MOD}/showcase_posts_list/get_showcase_posts_list.dspy",
f"/{MOD}/showcase_posts_list/add_showcase_posts_list.dspy",
f"/{MOD}/showcase_posts_list/update_showcase_posts_list.dspy",
f"/{MOD}/showcase_posts_list/delete_showcase_posts_list.dspy",
f"/{MOD}/showcase_comments_list",
f"/{MOD}/showcase_comments_list/index.ui",
f"/{MOD}/showcase_comments_list/get_showcase_comments_list.dspy",
f"/{MOD}/showcase_comments_list/add_showcase_comments_list.dspy",
f"/{MOD}/showcase_comments_list/update_showcase_comments_list.dspy",
f"/{MOD}/showcase_comments_list/delete_showcase_comments_list.dspy",
f"/{MOD}/showcase_downloads_list",
f"/{MOD}/showcase_downloads_list/index.ui",
f"/{MOD}/showcase_downloads_list/get_showcase_downloads_list.dspy",
f"/{MOD}/showcase_downloads_list/add_showcase_downloads_list.dspy",
f"/{MOD}/showcase_downloads_list/update_showcase_downloads_list.dspy",
f"/{MOD}/showcase_downloads_list/delete_showcase_downloads_list.dspy",
]
print(f"Registering RBAC permissions for {MOD}...")
for p in PATHS_ANY:
set_perm("any", p)
for p in PATHS_LOGINED:
set_perm("logined", p)
print("Done.")