Advertisement
Guest User

EnumTest

a guest
Jan 14th, 2018
480
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.26 KB | None | 0 0
  1. import enum
  2.  
  3. from flask import Flask
  4. from flask_sqlalchemy import SQLAlchemy
  5. from sqlalchemy.sql import table
  6. from alembic.operations import Operations
  7. from alembic.migration import MigrationContext
  8.  
  9. import sqlalchemy as sa
  10. from sqlalchemy.dialects import postgresql
  11.  
  12. app = Flask(__name__)
  13. app.config['DEBUG'] = True;
  14. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  15. app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2://enumtest:enumtest@localhost/enumtest'
  16.  
  17. db = SQLAlchemy()
  18. db.init_app(app)
  19.  
  20. class PermissionContexts(enum.Enum):
  21.     collection = 1
  22.     resourceType = 2
  23.     securityGroup = 3
  24.     resource = 4
  25.     locale = 5
  26.  
  27. with app.app_context():
  28.     conn = db.engine.connect()
  29.     context = MigrationContext.configure(conn)
  30.     op = Operations(context)
  31.    
  32.     pgpermissioncontexts = sa.Enum(PermissionContexts, name='permissioncontexts')
  33.     if db.engine.dialect.has_table(db.engine, 'permission'):
  34.         op.drop_table('permission')
  35.         op.execute('DROP TYPE permissioncontexts')
  36.    
  37.     permission = op.create_table('permission',
  38.         sa.Column('id', sa.Integer, nullable=False),
  39.         sa.Column('name', sa.String(length=255), nullable=False),
  40.         sa.Column('contexts', sa.ARRAY(pgpermissioncontexts), nullable=True),
  41.         sa.PrimaryKeyConstraint('id'),
  42.         sa.UniqueConstraint('name')
  43.     )
  44.    
  45.     try:
  46.         print('\n\nTrying Variation 1...', end='')
  47.         op.bulk_insert(permission, [{
  48.             'name': 'ViewContent',
  49.             'contexts': [pgpermissioncontexts.resourceType]
  50.         }])
  51.         print('Succeeded!')
  52.     except Exception as e:
  53.         print('Failed')
  54.         print(e)
  55.    
  56.     try:
  57.         print('\n\nTrying Variation 2...', end='')
  58.         op.bulk_insert(permission, [{
  59.             'name': 'ViewContent',
  60.             'contexts': [PermissionContexts.resourceType]
  61.         }])
  62.         print('Succeeded!')
  63.     except Exception as e:
  64.         print('Failed')
  65.         print(e)
  66.    
  67.     print('\n\nVariation 3 doesn\'t fail, it just runs indefinitely and blows out CPU/memory usage - terminate manually')
  68.     op.bulk_insert(permission, [{
  69.        'name': 'ViewContent',
  70.        'contexts': sa.cast([PermissionContexts.resourceType], sa.ARRAY(pgpermissioncontexts))
  71.     }])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement