diff --git a/lib/galaxy/model/repositories/tool_shed_repository.py b/lib/galaxy/model/repositories/tool_shed_repository.py index 26907c1c6da0..91644c3e2ff0 100644 --- a/lib/galaxy/model/repositories/tool_shed_repository.py +++ b/lib/galaxy/model/repositories/tool_shed_repository.py @@ -1,5 +1,4 @@ from sqlalchemy import ( - and_, cast, Integer, select, @@ -16,24 +15,11 @@ class ToolShedRepositoryRepository(ModelRepository): def __init__(self, session: SessionType): super().__init__(session, ToolShedRepository) - def get_filtered(self, name, owner, changeset, deleted, uninstalled): - clause_list = [] - if name is not None: - clause_list.append(ToolShedRepository.name == name) - if owner is not None: - clause_list.append(ToolShedRepository.owner == owner) - if changeset is not None: - clause_list.append(ToolShedRepository.changeset_revision == changeset) - if deleted is not None: - clause_list.append(ToolShedRepository.deleted == deleted) - if uninstalled is not None: - clause_list.append(ToolShedRepository.uninstalled == uninstalled) - - stmt = ( - select(ToolShedRepository) - .order_by(ToolShedRepository.name) - .order_by(cast(ToolShedRepository.ctx_rev, Integer).desc()) - ) - if len(clause_list) > 0: - stmt = stmt.filter(and_(*clause_list)) + def get_filtered(self, **kwd): + stmt = select(ToolShedRepository) + for key, value in kwd.items(): + if value is not None: + column = ToolShedRepository.table.c[key] + stmt = stmt.filter(column == value) + stmt = stmt.order_by(ToolShedRepository.name).order_by(cast(ToolShedRepository.ctx_rev, Integer).desc()) return self.session.scalars(stmt).all() # type:ignore[union-attr] diff --git a/lib/galaxy/webapps/galaxy/services/tool_shed_repositories.py b/lib/galaxy/webapps/galaxy/services/tool_shed_repositories.py index c2b8503e3d1d..d2ed763a5e39 100644 --- a/lib/galaxy/webapps/galaxy/services/tool_shed_repositories.py +++ b/lib/galaxy/webapps/galaxy/services/tool_shed_repositories.py @@ -40,7 +40,7 @@ def index(self, request: InstalledToolShedRepositoryIndexRequest) -> List[Instal repositories = self._tsr_repo.get_filtered( name=request.name, owner=request.owner, - changeset=request.changeset, + changeset_revision=request.changeset, deleted=request.deleted, uninstalled=request.uninstalled, )