This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.model.migrate.versions.0054_visualization_dbkey

Migration script to add dbkey column for visualization.

import logging
from json import loads

from sqlalchemy import (

from galaxy.model.migrate.versions.util import (

log = logging.getLogger(__name__)
metadata = MetaData()

[docs]def upgrade(migrate_engine): print(__doc__) metadata.bind = migrate_engine metadata.reflect() Visualization_table = Table("visualization", metadata, autoload=True) Visualization_revision_table = Table("visualization_revision", metadata, autoload=True) # Create dbkey columns. x = Column("dbkey", TEXT) add_column(x, Visualization_table, metadata) y = Column("dbkey", TEXT) add_column(y, Visualization_revision_table, metadata) # Indexes need to be added separately because MySQL cannot index a TEXT/BLOB # column without specifying mysql_length add_index("ix_visualization_dbkey", Visualization_table, 'dbkey') add_index("ix_visualization_revision_dbkey", Visualization_revision_table, 'dbkey') all_viz = migrate_engine.execute("SELECT visualization.id as viz_id, visualization_revision.id as viz_rev_id, visualization_revision.config FROM visualization_revision \ LEFT JOIN visualization ON visualization.id=visualization_revision.visualization_id") for viz in all_viz: viz_id = viz['viz_id'] viz_rev_id = viz['viz_rev_id'] if viz[Visualization_revision_table.c.config]: dbkey = loads(viz[Visualization_revision_table.c.config]).get('dbkey', "").replace("'", "\\'") migrate_engine.execute("UPDATE visualization_revision SET dbkey='{}' WHERE id={}".format(dbkey, viz_rev_id)) migrate_engine.execute("UPDATE visualization SET dbkey='{}' WHERE id={}".format(dbkey, viz_id))
[docs]def downgrade(migrate_engine): metadata.bind = migrate_engine metadata.reflect() drop_column('dbkey', 'visualization', metadata) drop_column('dbkey', 'visualization_revision', metadata)