/lib/galaxy/model/migrate/versions/0062_user_openid_table.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 60 lines · 42 code · 11 blank · 7 comment · 8 complexity · fbf6d38fc18a236f1cea8832e257abaf MD5 · raw file

  1. """
  2. Migration script to create table for associating sessions and users with
  3. OpenIDs.
  4. """
  5. from sqlalchemy import *
  6. from sqlalchemy.orm import *
  7. from migrate import *
  8. from migrate.changeset import *
  9. import datetime
  10. now = datetime.datetime.utcnow
  11. import logging
  12. log = logging.getLogger( __name__ )
  13. metadata = MetaData()
  14. # Table to add
  15. UserOpenID_table = Table( "galaxy_user_openid", metadata,
  16. Column( "id", Integer, primary_key=True ),
  17. Column( "create_time", DateTime, default=now ),
  18. Column( "update_time", DateTime, index=True, default=now, onupdate=now ),
  19. Column( "session_id", Integer, ForeignKey( "galaxy_session.id" ), index=True ),
  20. Column( "user_id", Integer, ForeignKey( "galaxy_user.id" ), index=True ),
  21. Column( "openid", TEXT ),
  22. )
  23. def upgrade(migrate_engine):
  24. metadata.bind = migrate_engine
  25. print __doc__
  26. metadata.reflect()
  27. # Create galaxy_user_openid table
  28. try:
  29. UserOpenID_table.create()
  30. except Exception, e:
  31. log.debug( "Creating galaxy_user_openid table failed: %s" % str( e ) )
  32. ix_name = 'ix_galaxy_user_openid_openid'
  33. if migrate_engine.name == 'mysql':
  34. i = "ALTER TABLE galaxy_user_openid ADD UNIQUE INDEX ( openid( 255 ) )"
  35. migrate_engine.execute( i )
  36. else:
  37. i = Index( ix_name, UserOpenID_table.c.openid, unique=True )
  38. try:
  39. i.create()
  40. except Exception, e:
  41. log.debug( "Adding index '%s' failed: %s" % ( ix_name, str( e ) ) )
  42. def downgrade(migrate_engine):
  43. metadata.bind = migrate_engine
  44. metadata.reflect()
  45. # Drop galaxy_user_openid table
  46. try:
  47. UserOpenID_table.drop()
  48. except Exception, e:
  49. log.debug( "Dropping galaxy_user_openid table failed: %s" % str( e ) )