def upgrade(op): from sqlalchemy_api_handler.mixins.activity_mixin import ActivityMixin db = Activate.get_db() versioning_manager.init(db.Model) versioning_manager.transaction_cls.__table__.create(op.get_bind()) class Activity(ActivityMixin, Activate, versioning_manager.activity_cls): __table_args__ = {'extend_existing': True} id = versioning_manager.activity_cls.id Activity.__table__.create(op.get_bind()) op.add_column('transaction', sa.Column('actor_id', sa.BigInteger()))
def install(): versioning_manager.init(Model) orm.configure_mappers() # FIXME: This is seriously ugly... (based on https://github.com/kvesteri/postgresql-audit/issues/21) try: versioning_manager.transaction_cls.__table__.create(db.session.get_bind()) except ProgrammingError: pass try: versioning_manager.activity_cls.__table__.create(db.session.get_bind()) except ProgrammingError: pass db.create_all() db.engine.execute("CREATE INDEX IF NOT EXISTS idx_activity_objid ON activity(cast(changed_data->>'id' AS INT));") db.session.commit()
from flask import current_app as app from postgresql_audit.flask import versioning_manager import sqlalchemy as sa from sqlalchemy.exc import ProgrammingError from utils.attr_dict import AttrDict from utils.config import IS_DEV app.config[ 'SQLALCHEMY_DATABASE_URI'] = 'postgresql://*****:*****@postgres/pass_culture' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False #app.config['SQLALCHEMY_ECHO'] = IS_DEV app.db = SQLAlchemy(app) app.model = AttrDict() versioning_manager.init(app.db.Model) import models.versioned_mixin import models.api_errors import models.pc_object import models.deactivable_mixin import models.extra_data_mixin import models.has_address_mixin import models.has_thumb_mixin import models.providable_mixin import models.booking import models.event import models.event_occurence import models.mediation
import os from flask_sqlalchemy import SQLAlchemy from postgresql_audit.flask import versioning_manager db = SQLAlchemy(engine_options={ 'pool_size': int(os.environ.get('DATABASE_POOL_SIZE', 3)), }) versioning_manager.init(db.Model)
from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from postgresql_audit.flask import versioning_manager # docker run --rm --name pg-docker -e POSTGRES_PASSWORD=docker -d -p 5432:5432 -v $HOME/Projects/postgresql-audit-play/postgres:/var/lib/postgresql/data postgres:11.5 engine = create_engine('postgresql://*****:*****@localhost:5432/karl_test', echo=True) Base = declarative_base() versioning_manager.init(Base) session = sessionmaker(bind=engine)()
def activity_cls(db): versioning_manager.init(db.Model) yield versioning_manager.activity_cls versioning_manager.remove_listeners()