Merge pull request #3274 from alphagov/new-permissions

Add new broadcast related permissions
This commit is contained in:
Katie Smith
2021-07-07 15:31:21 +01:00
committed by GitHub
2 changed files with 60 additions and 1 deletions

View File

@@ -1870,6 +1870,10 @@ SEND_LETTERS = 'send_letters'
MANAGE_API_KEYS = 'manage_api_keys'
PLATFORM_ADMIN = 'platform_admin'
VIEW_ACTIVITY = 'view_activity'
CREATE_BROADCASTS = 'create_broadcasts'
APPROVE_BROADCASTS = 'approve_broadcasts'
CANCEL_BROADCASTS = 'cancel_broadcasts'
REJECT_BROADCASTS = 'reject_broadcasts'
# List of permissions
PERMISSION_LIST = [
@@ -1881,7 +1885,12 @@ PERMISSION_LIST = [
SEND_LETTERS,
MANAGE_API_KEYS,
PLATFORM_ADMIN,
VIEW_ACTIVITY]
VIEW_ACTIVITY,
CREATE_BROADCASTS,
APPROVE_BROADCASTS,
CANCEL_BROADCASTS,
REJECT_BROADCASTS,
]
class Permission(db.Model):

View File

@@ -0,0 +1,50 @@
"""
Revision ID: 0359_more_permissions
Revises: 0358_operator_channel
Create Date: 2021-06-15 17:47:16.871071
"""
from alembic import op
import sqlalchemy as sa
revision = '0359_more_permissions'
down_revision = '0358_operator_channel'
enum_name = 'permission_types'
tmp_name = 'tmp_' + enum_name
old_options = (
'manage_users',
'manage_templates',
'manage_settings',
'send_texts',
'send_emails',
'send_letters',
'manage_api_keys',
'platform_admin',
'view_activity',
)
old_type = sa.Enum(*old_options, name=enum_name)
def upgrade():
# ALTER TYPE must be run outside of a transaction block (see link below for details)
# https://alembic.sqlalchemy.org/en/latest/api/runtime.html#alembic.runtime.migration.MigrationContext.autocommit_block
with op.get_context().autocommit_block():
op.execute("ALTER TYPE permission_types ADD VALUE 'create_broadcasts'")
op.execute("ALTER TYPE permission_types ADD VALUE 'approve_broadcasts'")
op.execute("ALTER TYPE permission_types ADD VALUE 'cancel_broadcasts'")
op.execute("ALTER TYPE permission_types ADD VALUE 'reject_broadcasts'")
def downgrade():
op.execute(
"DELETE FROM permissions WHERE permission in "
"('create_broadcasts', 'approve_broadcasts', 'cancel_broadcasts', 'reject_broadcasts')"
)
op.execute(f'ALTER TYPE {enum_name} RENAME TO {tmp_name}')
old_type.create(op.get_bind())
op.execute(f'ALTER TABLE permissions ALTER COLUMN permission TYPE {enum_name} USING permission::text::{enum_name}')
op.execute(f'DROP TYPE {tmp_name}')