| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- """角色编辑管理位(契约1.25):sys_role 新增 manage_role_edit。
- Revision ID: 0030_role_edit_permission
- Revises: 0029_system_management
- Create Date: 2026-09-10
- 变更要点:
- 1. sys_role 新增 manage_role_edit 布尔管理位(默认 0,与
- manage_category_edit 等同列族;内置 admin 账号恒有,不受开关约束);
- 2. 角色为全局对象,本管理位不受管理范围锚点约束(同分类编辑);
- 3. 升级幂等:加列先探测,可重复跑;与 Flyway V15 并行执行互不冲突。
- """
- from __future__ import annotations
- from collections.abc import Sequence
- import sqlalchemy as sa
- from alembic import op
- revision: str = "0030_role_edit_permission"
- down_revision: str | None = "0029_system_management"
- branch_labels: str | Sequence[str] | None = None
- depends_on: str | Sequence[str] | None = None
- ROLE_MANAGE_COLUMNS = ("manage_role_edit",)
- def _existing_role_columns() -> set[str]:
- inspector = sa.inspect(op.get_bind())
- return {
- column["name"].lower()
- for column in inspector.get_columns("sys_role")
- }
- def upgrade() -> None:
- existing_columns = _existing_role_columns()
- for column in ROLE_MANAGE_COLUMNS:
- if column not in existing_columns:
- op.add_column(
- "sys_role",
- sa.Column(
- column,
- sa.Boolean(),
- nullable=False,
- server_default=sa.text("0"),
- ),
- )
- def downgrade() -> None:
- existing_columns = _existing_role_columns()
- for column in ROLE_MANAGE_COLUMNS:
- if column in existing_columns:
- op.drop_column("sys_role", column)
|