/lib/galaxy/model/migrate/versions/0024_page_slug_unique_constraint.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 45 lines · 23 code · 14 blank · 8 comment · 1 complexity · 3ef5b1186617ff75373e2e4fda180769 MD5 · raw file

  1. """
  2. Remove unique constraint from page slugs to allow creating a page with
  3. the same slug as a deleted page.
  4. """
  5. from sqlalchemy import *
  6. from migrate import *
  7. from migrate.changeset import *
  8. import datetime
  9. now = datetime.datetime.utcnow
  10. import logging
  11. log = logging.getLogger( __name__ )
  12. metadata = MetaData()
  13. def upgrade(migrate_engine):
  14. metadata.bind = migrate_engine
  15. print __doc__
  16. metadata.reflect()
  17. Page_table = Table( "page", metadata, autoload=True )
  18. try:
  19. # Sqlite doesn't support .alter, so we need to drop an recreate
  20. i = Index( "ix_page_slug", Page_table.c.slug )
  21. i.drop()
  22. i = Index( "ix_page_slug", Page_table.c.slug, unique=False )
  23. i.create()
  24. except:
  25. # Mysql doesn't have a named index, but alter should work
  26. Page_table.c.slug.alter( unique=False )
  27. def downgrade(migrate_engine):
  28. metadata.bind = migrate_engine
  29. metadata.reflect()
  30. #Page_table = Table( "page", metadata, autoload=True )
  31. #Page_table.c.slug.alter( unique=True )