Warning

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.0018_ordered_tags_and_page_tags

"""
This migration script provides support for (a) ordering tags by recency and
(b) tagging pages. This script deletes all existing tags.
"""
from __future__ import print_function

import logging

from sqlalchemy import Column, ForeignKey, Index, Integer, MetaData, Table
from sqlalchemy.exc import OperationalError

# Need our custom types, but don't import anything else from model
from galaxy.model.custom_types import TrimmedString

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

HistoryTagAssociation_table = Table("history_tag_association", metadata,
                                    Column("id", Integer, primary_key=True),
                                    Column("history_id", Integer, ForeignKey("history.id"), index=True),
                                    Column("tag_id", Integer, ForeignKey("tag.id"), index=True),
                                    Column("user_tname", TrimmedString(255), index=True),
                                    Column("value", TrimmedString(255), index=True),
                                    Column("user_value", TrimmedString(255), index=True))

DatasetTagAssociation_table = Table("dataset_tag_association", metadata,
                                    Column("id", Integer, primary_key=True),
                                    Column("dataset_id", Integer, ForeignKey("dataset.id"), index=True),
                                    Column("tag_id", Integer, ForeignKey("tag.id"), index=True),
                                    Column("user_tname", TrimmedString(255), index=True),
                                    Column("value", TrimmedString(255), index=True),
                                    Column("user_value", TrimmedString(255), index=True))

HistoryDatasetAssociationTagAssociation_table = Table("history_dataset_association_tag_association", metadata,
                                                      Column("id", Integer, primary_key=True),
                                                      Column("history_dataset_association_id", Integer, ForeignKey("history_dataset_association.id"), index=True),
                                                      Column("tag_id", Integer, ForeignKey("tag.id"), index=True),
                                                      Column("user_tname", TrimmedString(255), index=True),
                                                      Column("value", TrimmedString(255), index=True),
                                                      Column("user_value", TrimmedString(255), index=True))

PageTagAssociation_table = Table("page_tag_association", metadata,
                                 Column("id", Integer, primary_key=True),
                                 Column("page_id", Integer, ForeignKey("page.id"), index=True),
                                 Column("tag_id", Integer, ForeignKey("tag.id"), index=True),
                                 Column("user_tname", TrimmedString(255), index=True),
                                 Column("value", TrimmedString(255), index=True),
                                 Column("user_value", TrimmedString(255), index=True))


[docs]def upgrade(migrate_engine): metadata.bind = migrate_engine print(__doc__) metadata.reflect() # # Recreate tables. # try: HistoryTagAssociation_table.drop() HistoryTagAssociation_table.create() except Exception: log.exception("Recreating history_tag_association table failed.") try: DatasetTagAssociation_table.drop() DatasetTagAssociation_table.create() except Exception: log.exception("Recreating dataset_tag_association table failed.") try: HistoryDatasetAssociationTagAssociation_table.drop() HistoryDatasetAssociationTagAssociation_table.create() except OperationalError as e: # Handle error that results from and index name that is too long; this occurs # in MySQL. if str(e).find("CREATE INDEX") != -1: # Manually create index. i = Index("ix_hda_ta_history_dataset_association_id", HistoryDatasetAssociationTagAssociation_table.c.history_dataset_association_id) try: i.create() except Exception: log.exception("Adding index 'ix_hda_ta_history_dataset_association_id' to table 'history_dataset_association_tag_association' table failed.") except Exception: log.exception("Recreating history_dataset_association_tag_association table failed.") # Create page_tag_association table. try: PageTagAssociation_table.create() except Exception: log.exception("Creating page_tag_association table failed.")
[docs]def downgrade(migrate_engine): metadata.bind = migrate_engine metadata.reflect() # No need to downgrade other tagging tables. They work fine with verision 16 code. # Drop page_tag_association table. try: PageTagAssociation_table.drop() except Exception: log.exception("Dropping page_tag_association table failed.")