Loading lib/galaxy/managers/workflows.py +3 −14 Original line number Diff line number Diff line Loading @@ -66,9 +66,6 @@ from galaxy.managers.context import ProvidesUserContext from galaxy.managers.executables import artifact_class from galaxy.model import ( History, ImplicitCollectionJobs, ImplicitCollectionJobsJobAssociation, Job, StoredWorkflow, StoredWorkflowTagAssociation, StoredWorkflowUserShareAssociation, Loading Loading @@ -422,9 +419,9 @@ class WorkflowsManager(sharable.SharableModelManager[model.StoredWorkflow], dele return workflow_canvas.finish(for_embed=for_embed) def get_invocation( self, trans, decoded_invocation_id: int, eager=False, check_ownership=True, check_accessible=True self, trans, decoded_invocation_id: int, check_ownership=True, check_accessible=True ) -> WorkflowInvocation: workflow_invocation = _get_invocation(trans.sa_session, eager, decoded_invocation_id) workflow_invocation = _get_invocation(trans.sa_session, decoded_invocation_id) if not workflow_invocation: encoded_wfi_id = trans.security.encode_id(decoded_invocation_id) message = f"'{encoded_wfi_id}' is not a valid workflow invocation id" Loading Loading @@ -2259,16 +2256,8 @@ def _get_stored_workflow(session, workflow_uuid, workflow_id, by_stored_id): return session.scalars(stmt).first() def _get_invocation(session, eager, invocation_id): def _get_invocation(session, invocation_id): stmt = select(WorkflowInvocation) if eager: stmt = stmt.options( subqueryload(WorkflowInvocation.steps) .joinedload(WorkflowInvocationStep.implicit_collection_jobs) .joinedload(ImplicitCollectionJobs.jobs) .joinedload(ImplicitCollectionJobsJobAssociation.job) .joinedload(Job.input_datasets) ) stmt = stmt.where(WorkflowInvocation.id == invocation_id).limit(1) return session.scalars(stmt).first() Loading lib/galaxy/model/__init__.py +1 −1 Original line number Diff line number Diff line Loading @@ -8964,7 +8964,7 @@ class WorkflowInvocation(Base, UsesCreateAndUpdateTime, Dictifiable, Serializabl back_populates="parent_workflow_invocation", uselist=True, ) steps = relationship( steps: Mapped[list["WorkflowInvocationStep"]] = relationship( "WorkflowInvocationStep", back_populates="workflow_invocation", order_by=lambda: WorkflowInvocationStep.order_index, Loading lib/galaxy/model/store/__init__.py +7 −5 Original line number Diff line number Diff line Loading @@ -2848,10 +2848,12 @@ class BcoModelExportStore(FileSourceModelExportStore, WorkflowInvocationOnlyExpo parametric_domain_items: List[ParametricDomainItem] = [] for inv_step in workflow_invocation.steps: try: for k, v in inv_step.workflow_step.tool_inputs.items(): param, value, step = k, v, inv_step.workflow_step.order_index tool_inputs = inv_step.workflow_step.tool_inputs if tool_inputs: for k, v in tool_inputs.items(): param, value, step_index = k, v, inv_step.workflow_step.order_index parametric_domain_items.append( ParametricDomainItem(param=str(param), value=str(value), step=str(step)) ParametricDomainItem(param=str(param), value=str(value), step=str(step_index)) ) except Exception: continue Loading lib/galaxy/webapps/galaxy/api/workflows.py +1 −1 Original line number Diff line number Diff line Loading @@ -1459,7 +1459,7 @@ class FastAPIInvocations: serialization_params = InvocationSerializationParams( step_details=step_details, legacy_job_state=legacy_job_state ) return self.invocations_service.show(trans, invocation_id, serialization_params, eager=True) return self.invocations_service.show(trans, invocation_id, serialization_params) @router.get( "/api/invocations/{invocation_id}/request", Loading lib/galaxy/webapps/galaxy/services/invocations.py +5 −9 Original line number Diff line number Diff line Loading @@ -138,16 +138,12 @@ class InvocationsService(ServiceBase, ConsumesModelStores): invocation_dict = self.serialize_workflow_invocations(invocations, serialization_params) return invocation_dict, total_matches def show(self, trans, invocation_id, serialization_params, eager=False): wfi = self._workflows_manager.get_invocation( trans, invocation_id, eager, check_ownership=False, check_accessible=True ) def show(self, trans, invocation_id, serialization_params): wfi = self._workflows_manager.get_invocation(trans, invocation_id, check_ownership=False, check_accessible=True) return self.serialize_workflow_invocation(wfi, serialization_params) def as_request(self, trans: ProvidesUserContext, invocation_id) -> WorkflowInvocationRequestModel: wfi = self._workflows_manager.get_invocation( trans, invocation_id, True, check_ownership=True, check_accessible=True ) wfi = self._workflows_manager.get_invocation(trans, invocation_id, check_ownership=True, check_accessible=True) return self.serialize_workflow_invocation_to_request(trans, wfi) def cancel(self, trans, invocation_id, serialization_params): Loading Loading @@ -210,7 +206,7 @@ class InvocationsService(ServiceBase, ConsumesModelStores): ensure_celery_tasks_enabled(trans.app.config) model_store_format = payload.model_store_format workflow_invocation = self._workflows_manager.get_invocation( trans, invocation_id, eager=True, check_ownership=False, check_accessible=True trans, invocation_id, check_ownership=False, check_accessible=True ) if not workflow_invocation: raise ObjectNotFound() Loading Loading @@ -238,7 +234,7 @@ class InvocationsService(ServiceBase, ConsumesModelStores): ) -> AsyncTaskResultSummary: ensure_celery_tasks_enabled(trans.app.config) workflow_invocation = self._workflows_manager.get_invocation( trans, invocation_id, eager=True, check_ownership=False, check_accessible=True trans, invocation_id, check_ownership=False, check_accessible=True ) if not workflow_invocation: raise ObjectNotFound() Loading Loading
lib/galaxy/managers/workflows.py +3 −14 Original line number Diff line number Diff line Loading @@ -66,9 +66,6 @@ from galaxy.managers.context import ProvidesUserContext from galaxy.managers.executables import artifact_class from galaxy.model import ( History, ImplicitCollectionJobs, ImplicitCollectionJobsJobAssociation, Job, StoredWorkflow, StoredWorkflowTagAssociation, StoredWorkflowUserShareAssociation, Loading Loading @@ -422,9 +419,9 @@ class WorkflowsManager(sharable.SharableModelManager[model.StoredWorkflow], dele return workflow_canvas.finish(for_embed=for_embed) def get_invocation( self, trans, decoded_invocation_id: int, eager=False, check_ownership=True, check_accessible=True self, trans, decoded_invocation_id: int, check_ownership=True, check_accessible=True ) -> WorkflowInvocation: workflow_invocation = _get_invocation(trans.sa_session, eager, decoded_invocation_id) workflow_invocation = _get_invocation(trans.sa_session, decoded_invocation_id) if not workflow_invocation: encoded_wfi_id = trans.security.encode_id(decoded_invocation_id) message = f"'{encoded_wfi_id}' is not a valid workflow invocation id" Loading Loading @@ -2259,16 +2256,8 @@ def _get_stored_workflow(session, workflow_uuid, workflow_id, by_stored_id): return session.scalars(stmt).first() def _get_invocation(session, eager, invocation_id): def _get_invocation(session, invocation_id): stmt = select(WorkflowInvocation) if eager: stmt = stmt.options( subqueryload(WorkflowInvocation.steps) .joinedload(WorkflowInvocationStep.implicit_collection_jobs) .joinedload(ImplicitCollectionJobs.jobs) .joinedload(ImplicitCollectionJobsJobAssociation.job) .joinedload(Job.input_datasets) ) stmt = stmt.where(WorkflowInvocation.id == invocation_id).limit(1) return session.scalars(stmt).first() Loading
lib/galaxy/model/__init__.py +1 −1 Original line number Diff line number Diff line Loading @@ -8964,7 +8964,7 @@ class WorkflowInvocation(Base, UsesCreateAndUpdateTime, Dictifiable, Serializabl back_populates="parent_workflow_invocation", uselist=True, ) steps = relationship( steps: Mapped[list["WorkflowInvocationStep"]] = relationship( "WorkflowInvocationStep", back_populates="workflow_invocation", order_by=lambda: WorkflowInvocationStep.order_index, Loading
lib/galaxy/model/store/__init__.py +7 −5 Original line number Diff line number Diff line Loading @@ -2848,10 +2848,12 @@ class BcoModelExportStore(FileSourceModelExportStore, WorkflowInvocationOnlyExpo parametric_domain_items: List[ParametricDomainItem] = [] for inv_step in workflow_invocation.steps: try: for k, v in inv_step.workflow_step.tool_inputs.items(): param, value, step = k, v, inv_step.workflow_step.order_index tool_inputs = inv_step.workflow_step.tool_inputs if tool_inputs: for k, v in tool_inputs.items(): param, value, step_index = k, v, inv_step.workflow_step.order_index parametric_domain_items.append( ParametricDomainItem(param=str(param), value=str(value), step=str(step)) ParametricDomainItem(param=str(param), value=str(value), step=str(step_index)) ) except Exception: continue Loading
lib/galaxy/webapps/galaxy/api/workflows.py +1 −1 Original line number Diff line number Diff line Loading @@ -1459,7 +1459,7 @@ class FastAPIInvocations: serialization_params = InvocationSerializationParams( step_details=step_details, legacy_job_state=legacy_job_state ) return self.invocations_service.show(trans, invocation_id, serialization_params, eager=True) return self.invocations_service.show(trans, invocation_id, serialization_params) @router.get( "/api/invocations/{invocation_id}/request", Loading
lib/galaxy/webapps/galaxy/services/invocations.py +5 −9 Original line number Diff line number Diff line Loading @@ -138,16 +138,12 @@ class InvocationsService(ServiceBase, ConsumesModelStores): invocation_dict = self.serialize_workflow_invocations(invocations, serialization_params) return invocation_dict, total_matches def show(self, trans, invocation_id, serialization_params, eager=False): wfi = self._workflows_manager.get_invocation( trans, invocation_id, eager, check_ownership=False, check_accessible=True ) def show(self, trans, invocation_id, serialization_params): wfi = self._workflows_manager.get_invocation(trans, invocation_id, check_ownership=False, check_accessible=True) return self.serialize_workflow_invocation(wfi, serialization_params) def as_request(self, trans: ProvidesUserContext, invocation_id) -> WorkflowInvocationRequestModel: wfi = self._workflows_manager.get_invocation( trans, invocation_id, True, check_ownership=True, check_accessible=True ) wfi = self._workflows_manager.get_invocation(trans, invocation_id, check_ownership=True, check_accessible=True) return self.serialize_workflow_invocation_to_request(trans, wfi) def cancel(self, trans, invocation_id, serialization_params): Loading Loading @@ -210,7 +206,7 @@ class InvocationsService(ServiceBase, ConsumesModelStores): ensure_celery_tasks_enabled(trans.app.config) model_store_format = payload.model_store_format workflow_invocation = self._workflows_manager.get_invocation( trans, invocation_id, eager=True, check_ownership=False, check_accessible=True trans, invocation_id, check_ownership=False, check_accessible=True ) if not workflow_invocation: raise ObjectNotFound() Loading Loading @@ -238,7 +234,7 @@ class InvocationsService(ServiceBase, ConsumesModelStores): ) -> AsyncTaskResultSummary: ensure_celery_tasks_enabled(trans.app.config) workflow_invocation = self._workflows_manager.get_invocation( trans, invocation_id, eager=True, check_ownership=False, check_accessible=True trans, invocation_id, check_ownership=False, check_accessible=True ) if not workflow_invocation: raise ObjectNotFound() Loading