From 92b32bab810b62c75dbb0515e7a371f0afae7fe1 Mon Sep 17 00:00:00 2001 From: Sergey Golitsynskiy Date: Wed, 20 Oct 2021 13:17:02 -0400 Subject: [PATCH] Map ToolDependency declaratively --- lib/galaxy/model/tool_shed_install/__init__.py | 18 +++++++++++++++++- lib/galaxy/model/tool_shed_install/mapping.py | 17 ++--------------- .../data/model/test_install_model_mapping.py | 3 +-- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/lib/galaxy/model/tool_shed_install/__init__.py b/lib/galaxy/model/tool_shed_install/__init__.py index ffd97f7fd6f..c9e427586aa 100644 --- a/lib/galaxy/model/tool_shed_install/__init__.py +++ b/lib/galaxy/model/tool_shed_install/__init__.py @@ -9,6 +9,7 @@ from sqlalchemy import ( ForeignKey, Integer, Table, + TEXT, ) from sqlalchemy.orm import ( registry, @@ -16,6 +17,9 @@ from sqlalchemy.orm import ( ) from sqlalchemy.orm.decl_api import DeclarativeMeta +from galaxy.model.custom_types import ( + TrimmedString +) from galaxy.model.orm.now import now from galaxy.util import asbool from galaxy.util.bunch import Bunch @@ -537,7 +541,19 @@ class RepositoryDependency(Base, _HasTable): self.tool_shed_repository_id = tool_shed_repository_id -class ToolDependency(_HasTable): +class ToolDependency(Base, _HasTable): + __tablename__ = 'tool_dependency' + + id = Column(Integer, primary_key=True) + create_time = Column(DateTime, default=now) + update_time = Column(DateTime, default=now, onupdate=now) + tool_shed_repository_id = Column(Integer, ForeignKey('tool_shed_repository.id'), index=True, nullable=False) + name = Column(TrimmedString(255)) + version = Column(TEXT) + type = Column(TrimmedString(40)) + status = Column(TrimmedString(255), nullable=False) + error_message = Column(TEXT) + # converting this one to Enum breaks the tool shed tests, # don't know why though -John installation_status = Bunch(NEVER_INSTALLED='Never installed', diff --git a/lib/galaxy/model/tool_shed_install/mapping.py b/lib/galaxy/model/tool_shed_install/mapping.py index 60b8dba5e0d..244b3ddfb37 100644 --- a/lib/galaxy/model/tool_shed_install/mapping.py +++ b/lib/galaxy/model/tool_shed_install/mapping.py @@ -42,17 +42,6 @@ install_model.ToolShedRepository.table = Table("tool_shed_repository", metadata, Column("status", TrimmedString(255)), Column("error_message", TEXT)) -install_model.ToolDependency.table = Table("tool_dependency", metadata, - Column("id", Integer, primary_key=True), - Column("create_time", DateTime, default=now), - Column("update_time", DateTime, default=now, onupdate=now), - Column("tool_shed_repository_id", Integer, ForeignKey("tool_shed_repository.id"), index=True, nullable=False), - Column("name", TrimmedString(255)), - Column("version", TEXT), - Column("type", TrimmedString(40)), - Column("status", TrimmedString(255), nullable=False), - Column("error_message", TEXT)) - install_model.ToolVersion.table = Table("tool_version", metadata, Column("id", Integer, primary_key=True), Column("create_time", DateTime, default=now), @@ -70,14 +59,12 @@ mapper_registry.map_imperatively(install_model.ToolShedRepository, install_model primaryjoin=(install_model.ToolShedRepository.table.c.id == install_model.ToolVersion.table.c.tool_shed_repository_id), backref='tool_shed_repository'), tool_dependencies=relation(install_model.ToolDependency, - primaryjoin=(install_model.ToolShedRepository.table.c.id == install_model.ToolDependency.table.c.tool_shed_repository_id), - order_by=install_model.ToolDependency.table.c.name, + primaryjoin=(install_model.ToolShedRepository.table.c.id == install_model.ToolDependency.tool_shed_repository_id), + order_by=install_model.ToolDependency.name, backref='tool_shed_repository'), required_repositories=relation(install_model.RepositoryRepositoryDependencyAssociation, primaryjoin=(install_model.ToolShedRepository.table.c.id == install_model.RepositoryRepositoryDependencyAssociation.tool_shed_repository_id)))) -mapper_registry.map_imperatively(install_model.ToolDependency, install_model.ToolDependency.table) - mapper_registry.map_imperatively(install_model.ToolVersion, install_model.ToolVersion.table, properties=dict( parent_tool_association=relation(install_model.ToolVersionAssociation, diff --git a/test/unit/data/model/test_install_model_mapping.py b/test/unit/data/model/test_install_model_mapping.py index 0837a79a024..301869835ce 100644 --- a/test/unit/data/model/test_install_model_mapping.py +++ b/test/unit/data/model/test_install_model_mapping.py @@ -173,8 +173,7 @@ class TestRepositoryDependency(BaseTest): class TestToolDependency(BaseTest): def test_table(self, cls_): - assert cls_.table.name == 'tool_dependency' - # assert cls_.__tablename__ == 'tool_dependency' # TODO + assert cls_.__tablename__ == 'tool_dependency' def test_columns(self, session, cls_, repository): create_time = datetime.now()