Unverified Commit b5ead3b5 authored by Marius van den Beek's avatar Marius van den Beek Committed by GitHub
Browse files

Merge pull request #19942 from mvdbeek/better_interactive_tool_entry_point_query

[24.2] Better interactive tool entry point query
parents 5180c13a ab1b36c2
Loading
Loading
Loading
Loading
+9 −13
Original line number Diff line number Diff line
@@ -12,7 +12,6 @@ from sqlalchemy import (
    insert,
    Integer,
    MetaData,
    or_,
    select,
    String,
    Table,
@@ -203,18 +202,15 @@ class InteractiveToolManager:
        if trans.user is None and trans.get_galaxy_session() is None:
            return []

        def build_subquery():
        stmt = (
            select(InteractiveToolEntryPoint)
            .join(Job, InteractiveToolEntryPoint.job_id == Job.id)
            .where(Job.state.in_(Job.non_ready_states))
        )
        if trans.user:
                stmt = select(Job.id).where(Job.user == trans.user)
            stmt = stmt.where(Job.user == trans.user)
        else:
                stmt = select(Job.id).where(Job.session_id == trans.get_galaxy_session().id)
            filters = []
            for state in Job.non_ready_states:
                filters.append(Job.state == state)
            stmt = stmt.where(or_(*filters))
            return stmt.subquery()

        stmt = select(InteractiveToolEntryPoint).where(InteractiveToolEntryPoint.job_id.in_(build_subquery()))
            stmt = stmt.where(Job.session_id == trans.get_galaxy_session().id)
        return trans.sa_session.scalars(stmt)

    def can_access_job(self, trans, job):