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.0012_user_address

"""
This script adds a new user_address table that is currently only used with sample requests, where
a user can select from a list of his addresses to associate with the request.  This script also
drops the request.submitted column which was boolean and replaces it with a request.state column
which is a string, allowing for more flexibility with request states.
"""

import datetime
import logging

from sqlalchemy import (
    Boolean,
    Column,
    DateTime,
    ForeignKey,
    Integer,
    MetaData,
    Table,
    TEXT
)

from galaxy.model.custom_types import TrimmedString
from galaxy.model.migrate.versions.util import (
    add_column,
    create_table,
    drop_column
)

log = logging.getLogger(__name__)
now = datetime.datetime.utcnow
metadata = MetaData()

UserAddress_table = Table("user_address", metadata,
                          Column("id", Integer, primary_key=True),
                          Column("create_time", DateTime, default=now),
                          Column("update_time", DateTime, default=now, onupdate=now),
                          Column("user_id", Integer, ForeignKey("galaxy_user.id"), index=True),
                          Column("desc", TEXT),
                          Column("name", TrimmedString(255), nullable=False),
                          Column("institution", TrimmedString(255)),
                          Column("address", TrimmedString(255), nullable=False),
                          Column("city", TrimmedString(255), nullable=False),
                          Column("state", TrimmedString(255), nullable=False),
                          Column("postal_code", TrimmedString(255), nullable=False),
                          Column("country", TrimmedString(255), nullable=False),
                          Column("phone", TrimmedString(255)),
                          Column("deleted", Boolean, index=True, default=False),
                          Column("purged", Boolean, index=True, default=False))


[docs]def upgrade(migrate_engine): print(__doc__) metadata.bind = migrate_engine metadata.reflect() # Add all of the new tables above create_table(UserAddress_table) # Add 1 column to the request_type table col = Column("deleted", Boolean, index=True, default=False) add_column(col, 'request_type', metadata, index_name='ix_request_type_deleted') # Delete the submitted column # This fails for sqlite, so skip the drop -- no conflicts in the future Request_table = Table("request", metadata, autoload=True) # SQLAlchemy Migrate has a bug when dropping a boolean column in SQLite if migrate_engine.name != 'sqlite': drop_column('submitted', Request_table) col = Column("state", TrimmedString(255), index=True) add_column(col, Request_table, metadata, index_name='ix_request_state')
[docs]def downgrade(migrate_engine): pass