PayrollManagementSystem/backend/alembic/versions/25d6e7f8a9b0_monitor_permissions.py
liuwenxin 2c003fc4a7 style(迁移): 修正迁移脚本的 Ruff 检查问题
将等价字典构造改为字面量并标记未使用字段,保持迁移 SQL 语义。
2026-11-03 17:18:44 +08:00

25 lines
1.3 KiB
Python

"""V25 将新增系统监控接入统一功能权限,不修改已应用的 V22。"""
from alembic import op
import sqlalchemy as sa
revision: str = "25d6e7f8a9b0"
down_revision: str | None = "24c5d6e7f8a9"
branch_labels = None
depends_on = None
def upgrade():
bind = op.get_bind()
for code, name, kind in (
("system:monitor:view", "系统监控:查看", 1),
("system:monitor:export", "系统监控:导出", 2),
):
bind.execute(sa.text("INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) SELECT :code,:name,:kind,100,1 WHERE NOT EXISTS (SELECT 1 FROM permissions WHERE perm_code=:code)"), {"code": code,"name": name,"kind": kind})
bind.execute(sa.text("INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code=:code WHERE r.role_code='admin' AND NOT EXISTS (SELECT 1 FROM role_permissions old WHERE old.role_id=r.id AND old.permission_id=p.id)"), {"code": code})
bind.execute(sa.text("UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:monitor:view' SET p.parent_id=parent.id WHERE p.perm_code='system:monitor:export'"))
def downgrade():
# V23 也可能已登记目录;回退此兼容版本不删除任何既有授权。
return