Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import enum
- from flask import Flask
- from flask_sqlalchemy import SQLAlchemy
- from sqlalchemy.sql import table
- from alembic.operations import Operations
- from alembic.migration import MigrationContext
- import sqlalchemy as sa
- from sqlalchemy.dialects import postgresql
- app = Flask(__name__)
- app.config['DEBUG'] = True;
- app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
- app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2://enumtest:enumtest@localhost/enumtest'
- db = SQLAlchemy()
- db.init_app(app)
- class PermissionContexts(enum.Enum):
- collection = 1
- resourceType = 2
- securityGroup = 3
- resource = 4
- locale = 5
- with app.app_context():
- conn = db.engine.connect()
- context = MigrationContext.configure(conn)
- op = Operations(context)
- pgpermissioncontexts = sa.Enum(PermissionContexts, name='permissioncontexts')
- if db.engine.dialect.has_table(db.engine, 'permission'):
- op.drop_table('permission')
- op.execute('DROP TYPE permissioncontexts')
- permission = op.create_table('permission',
- sa.Column('id', sa.Integer, nullable=False),
- sa.Column('name', sa.String(length=255), nullable=False),
- sa.Column('contexts', sa.ARRAY(pgpermissioncontexts), nullable=True),
- sa.PrimaryKeyConstraint('id'),
- sa.UniqueConstraint('name')
- )
- try:
- print('\n\nTrying Variation 1...', end='')
- op.bulk_insert(permission, [{
- 'name': 'ViewContent',
- 'contexts': [pgpermissioncontexts.resourceType]
- }])
- print('Succeeded!')
- except Exception as e:
- print('Failed')
- print(e)
- try:
- print('\n\nTrying Variation 2...', end='')
- op.bulk_insert(permission, [{
- 'name': 'ViewContent',
- 'contexts': [PermissionContexts.resourceType]
- }])
- print('Succeeded!')
- except Exception as e:
- print('Failed')
- print(e)
- print('\n\nVariation 3 doesn\'t fail, it just runs indefinitely and blows out CPU/memory usage - terminate manually')
- op.bulk_insert(permission, [{
- 'name': 'ViewContent',
- 'contexts': sa.cast([PermissionContexts.resourceType], sa.ARRAY(pgpermissioncontexts))
- }])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement