25 lines
1.3 KiB
Python
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
|