56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
"""add repair timeline read permission
|
|
|
|
Revision ID: 0011_repair_timeline
|
|
Revises: 0010_begin_repair
|
|
Create Date: 2026-07-29
|
|
"""
|
|
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
|
|
|
|
revision: str = "0011_repair_timeline"
|
|
down_revision: Union[str, None] = "0010_begin_repair"
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
connection = op.get_bind()
|
|
|
|
connection.exec_driver_sql(
|
|
"""
|
|
INSERT INTO permissions (key, description)
|
|
VALUES ('repairs.read', 'View repair details and timeline events')
|
|
ON CONFLICT (key) DO UPDATE
|
|
SET description = EXCLUDED.description
|
|
"""
|
|
)
|
|
connection.exec_driver_sql(
|
|
"""
|
|
INSERT INTO role_permissions (role_id, permission_id)
|
|
SELECT roles.id, permissions.id
|
|
FROM roles
|
|
JOIN permissions ON permissions.key = 'repairs.read'
|
|
WHERE roles.name IN ('Admin', 'Manager', 'Technician', 'Read Only')
|
|
ON CONFLICT DO NOTHING
|
|
"""
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
connection = op.get_bind()
|
|
|
|
connection.exec_driver_sql(
|
|
"""
|
|
DELETE FROM role_permissions
|
|
WHERE permission_id = (
|
|
SELECT id FROM permissions WHERE key = 'repairs.read'
|
|
)
|
|
"""
|
|
)
|
|
connection.exec_driver_sql(
|
|
"DELETE FROM permissions WHERE key = 'repairs.read'"
|
|
)
|