| """access_id in user_projects |
| |
| Revision ID: 987edda096f5 |
| Revises: 8a3b10926153 |
| Create Date: 2016-07-05 18:21:14.771273 |
| |
| """ |
| |
| |
| revision = '987edda096f5' |
| down_revision = '8a3b10926153' |
| |
| from alembic import op |
| import sqlalchemy as sa |
| from sqlalchemy.sql import table, column |
| |
| acl = table ( |
| 'access_levels', |
| column('access', sa.String(255)) |
| ) |
| |
| def upgrade(): |
| ''' Add a foreign key in user_projects and projects_groups |
| table for access_levels |
| ''' |
| |
| |
| |
| |
| op.create_table( |
| 'access_levels', |
| sa.Column('access', sa.String(255), primary_key=True) |
| ) |
| op.bulk_insert( |
| acl, |
| [ |
| {'access': 'ticket'}, |
| {'access': 'commit'}, |
| {'access': 'admin'}, |
| ], |
| ) |
| op.add_column( |
| 'user_projects', |
| sa.Column( |
| 'access', |
| sa.String(255), |
| sa.ForeignKey( |
| 'access_levels.access', |
| onupdate='CASCADE', |
| ondelete='CASCADE', |
| ), |
| nullable=True, |
| ), |
| ) |
| op.execute('UPDATE "user_projects" SET access=\'admin\'') |
| op.alter_column( |
| 'user_projects', |
| 'access', |
| nullable=False, |
| existing_nullable=True, |
| ) |
| |
| |
| op.add_column( |
| 'projects_groups', |
| sa.Column( |
| 'access', |
| sa.String(255), |
| sa.ForeignKey( |
| 'access_levels.access', |
| onupdate='CASCADE', |
| ondelete='CASCADE', |
| ), |
| nullable=True, |
| ), |
| ) |
| op.execute('UPDATE "projects_groups" SET access=\'admin\'') |
| op.alter_column( |
| 'projects_groups', |
| 'access', |
| nullable=False, |
| existing_nullable=True, |
| ) |
| |
| |
| op.drop_constraint('user_projects_project_id_fkey', 'user_projects') |
| op.create_unique_constraint( |
| None, |
| 'user_projects', |
| ["project_id", "user_id", "access"] |
| ) |
| |
| op.drop_constraint('projects_groups_pkey', 'projects_groups') |
| op.create_primary_key( |
| None, |
| 'projects_groups', |
| ['project_id', 'group_id', 'access'], |
| ) |
| |
| |
| def downgrade(): |
| ''' Remove column access_id from user_projects and projects_groups ''' |
| |
| |
| op.drop_column('user_projects', 'access') |
| op.drop_column('projects_groups', 'access') |
| |
| |
| op.create_unique_constraint( |
| None, |
| 'user_projects', |
| ['project_id', 'user_id'], |
| ) |
| op.create_primary_key( |
| None, |
| 'projects_groups', |
| ['project_id', 'group_id'], |
| ) |
| op.drop_table('access_levels') |