Warning

This document is for an old release 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.0013_change_lib_item_templates_to_forms

"""
This migration script eliminates all of the tables that were used for the 1st version of the
library templates where template fields and contents were each stored as a separate table row
in various library item tables.  All of these tables are dropped in this script, eliminating all
existing template data.  A total of 14 existing tables are dropped.

We're now basing library templates on forms, so field contents are
stored as a jsonified list in the form_values table.  This script introduces the following 3
new association tables:
1) library_info_association
2) library_folder_info_association
3) library_dataset_dataset_info_association
"""

import logging

from sqlalchemy import (
    Column,
    ForeignKey,
    Integer,
    MetaData,
    Table
)

from galaxy.model.migrate.versions.util import (
    create_table,
    drop_table
)

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

OLD_TABLE_NAMES = [
    'library_item_info_permissions',
    'library_item_info_template_permissions',
    'library_item_info_element',
    'library_item_info_template_element',
    'library_info_template_association',
    'library_folder_info_template_association',
    'library_dataset_info_template_association',
    'library_dataset_dataset_info_template_association',
    'library_info_association',
    'library_folder_info_association',
    'library_dataset_info_association',
    'library_dataset_dataset_info_association',
    'library_item_info',
    'library_item_info_template',
]

LibraryInfoAssociation_table = Table('library_info_association', metadata,
                                     Column("id", Integer, primary_key=True),
                                     Column("library_id", Integer, ForeignKey("library.id"), index=True),
                                     Column("form_definition_id", Integer, ForeignKey("form_definition.id"), index=True),
                                     Column("form_values_id", Integer, ForeignKey("form_values.id"), index=True))

LibraryFolderInfoAssociation_table = Table('library_folder_info_association', metadata,
                                           Column("id", Integer, primary_key=True),
                                           Column("library_folder_id", Integer, ForeignKey("library_folder.id"), nullable=True, index=True),
                                           Column("form_definition_id", Integer, ForeignKey("form_definition.id"), index=True),
                                           Column("form_values_id", Integer, ForeignKey("form_values.id"), index=True))

LibraryDatasetDatasetInfoAssociation_table = Table('library_dataset_dataset_info_association', metadata,
                                                   Column("id", Integer, primary_key=True),
                                                   Column("library_dataset_dataset_association_id", Integer, ForeignKey("library_dataset_dataset_association.id"), nullable=True, index=True),
                                                   Column("form_definition_id", Integer, ForeignKey("form_definition.id"), index=True),
                                                   Column("form_values_id", Integer, ForeignKey("form_values.id"), index=True))

NEW_TABLES = [
    LibraryInfoAssociation_table,
    LibraryFolderInfoAssociation_table,
    LibraryDatasetDatasetInfoAssociation_table
]


[docs]def upgrade(migrate_engine): print(__doc__) metadata.bind = migrate_engine metadata.reflect() # Drop all of the original library_item_info tables # NOTE: all existing library item into template data is eliminated here via table drops for table_name in OLD_TABLE_NAMES: drop_table(table_name, metadata) # Create all new tables above for table in NEW_TABLES: create_table(table)
[docs]def downgrade(migrate_engine): pass