def run_migrations_online(): if DBSession.bind is None: raise ValueError( "\nYou must run Kotti's migration using the 'kotti-migrate' script" "\nand not through 'alembic' directly.") transaction.begin() connection = DBSession.connection() context.configure( connection=connection, target_metadata=metadata, ) try: context.run_migrations() mark_changed(DBSession()) except: traceback.print_exc() transaction.abort() else: transaction.commit() finally: #connection.close() pass
def run_migrations_online(): if DBSession.bind is None: raise ValueError( "\nYou must run Kotti's migration using the 'kotti-migrate' script" "\nand not through 'alembic' directly." ) transaction.begin() connection = DBSession.connection() context.configure( connection=connection, target_metadata=metadata, ) try: context.run_migrations() mark_changed(DBSession()) except: traceback.print_exc() transaction.abort() else: transaction.commit() finally: # connection.close() pass
def upgrade(): from depot.manager import DepotManager from depot.fields.upload import UploadedFile from depot.fields.sqlalchemy import UploadedFileField from kotti import DBSession, metadata from kotti.resources import File t = sa.Table('files', metadata) t.c.data.type = sa.LargeBinary() dn = DepotManager.get_default() update = t.update() conn = DBSession.connection() for obj in DBSession.query(File): uploaded_file = UploadedFile({'depot_name': dn, 'files': []}) uploaded_file._thaw() uploaded_file.process_content(obj.data, filename=obj.filename, content_type=obj.mimetype) stored_file = DepotManager.get().get(uploaded_file['file_id']) stmt = update.where(t.c.id == obj.id).values( data=uploaded_file.encode()) res = conn.execute(stmt) assert res.rowcount == 1 stored_file.last_modified = obj.modification_date log.info("Migrated {} bytes for File with pk {} to {}/{}".format( len(obj.data), obj.id, dn, uploaded_file['file_id'])) DBSession.flush() if DBSession.get_bind().name != 'sqlite': # not supported by sqlite op.alter_column('files', 'data', type_=UploadedFileField())
def upgrade(): from depot.manager import DepotManager from depot.fields.upload import UploadedFile from depot.fields.sqlalchemy import UploadedFileField from kotti import DBSession, metadata from kotti.resources import File t = sa.Table('files', metadata) t.c.data.type = sa.LargeBinary() dn = DepotManager.get_default() update = t.update() conn = DBSession.connection() for obj in DBSession.query(File): uploaded_file = UploadedFile({'depot_name': dn, 'files': []}) uploaded_file._thaw() uploaded_file.process_content( obj.data, filename=obj.filename, content_type=obj.mimetype) stored_file = DepotManager.get().get(uploaded_file['file_id']) stmt = update.where( t.c.id == obj.id).values(data=uploaded_file.encode()) res = conn.execute(stmt) assert res.rowcount == 1 stored_file.last_modified = obj.modification_date log.info("Migrated {} bytes for File with pk {} to {}/{}".format( len(obj.data), obj.id, dn, uploaded_file['file_id'])) DBSession.flush() if DBSession.get_bind().name != 'sqlite': # not supported by sqlite op.alter_column('files', 'data', type_=UploadedFileField())
def create_rdb_table(context, request): columns, is_spatial = define_table_columnns(context) if columns: new_table = Table(context.table_name, metadata, *columns) engine = DBSession.connection().engine # create the table #metadata.create_all(engine) new_table.create(engine) context.is_created = True request.session.flash(u'Table created') else: request.session.flash(u'No columns defined, no table created')