/lib/galaxy/model/migrate/versions/0054_visualization_dbkey.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 56 lines · 40 code · 11 blank · 5 comment · 2 complexity · 32c2b11141eb69fd43a8bbe4d61072a7 MD5 · raw file

  1. """
  2. Migration script to add dbkey column for visualization.
  3. """
  4. from sqlalchemy import *
  5. from sqlalchemy.orm import *
  6. from migrate import *
  7. from migrate.changeset import *
  8. from galaxy.util.json import from_json_string
  9. import logging
  10. log = logging.getLogger( __name__ )
  11. metadata = MetaData()
  12. def upgrade(migrate_engine):
  13. metadata.bind = migrate_engine
  14. print __doc__
  15. metadata.reflect()
  16. Visualization_table = Table( "visualization", metadata, autoload=True )
  17. Visualization_revision_table = Table( "visualization_revision", metadata, autoload=True )
  18. # Create dbkey columns.
  19. x = Column( "dbkey", TEXT )
  20. y = Column( "dbkey", TEXT )
  21. x.create( Visualization_table )
  22. y.create( Visualization_revision_table )
  23. # Manually create indexes for compatability w/ mysql_length.
  24. xi = Index( "ix_visualization_dbkey", Visualization_table.c.dbkey, mysql_length = 200)
  25. xi.create()
  26. yi = Index( "ix_visualization_revision_dbkey", Visualization_revision_table.c.dbkey, mysql_length = 200)
  27. yi.create()
  28. assert x is Visualization_table.c.dbkey
  29. assert y is Visualization_revision_table.c.dbkey
  30. all_viz = migrate_engine.execute( "SELECT visualization.id as viz_id, visualization_revision.id as viz_rev_id, visualization_revision.config FROM visualization_revision \
  31. LEFT JOIN visualization ON visualization.id=visualization_revision.visualization_id" )
  32. for viz in all_viz:
  33. viz_id = viz['viz_id']
  34. viz_rev_id = viz['viz_rev_id']
  35. if viz[Visualization_revision_table.c.config]:
  36. dbkey = from_json_string(viz[Visualization_revision_table.c.config]).get('dbkey', "").replace("'", "\\'")
  37. migrate_engine.execute("UPDATE visualization_revision SET dbkey='%s' WHERE id=%s" % (dbkey, viz_rev_id))
  38. migrate_engine.execute("UPDATE visualization SET dbkey='%s' WHERE id=%s" % (dbkey, viz_id))
  39. def downgrade(migrate_engine):
  40. metadata.bind = migrate_engine
  41. metadata.reflect()
  42. Visualization_table = Table( "visualization", metadata, autoload=True )
  43. Visualization_revision_table = Table( "visualization_revision", metadata, autoload=True )
  44. Visualization_table.c.dbkey.drop()
  45. Visualization_revision_table.c.dbkey.drop()