From f1dddfb4b1377566746764ce33a8a6d31b524739 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 30 Aug 2024 18:43:54 +0200 Subject: [PATCH] Fix job summary for optional unset job data inputs Fixes https://sentry.galaxyproject.org/share/issue/31c83cea41a94a7c9c367a66d89fae37/: ``` AttributeError: 'NoneType' object has no attribute 'id' File "starlette/applications.py", line 123, in __call__ await self.middleware_stack(scope, receive, send) File "starlette/middleware/errors.py", line 186, in __call__ raise exc File "starlette/middleware/errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "starlette_context/middleware/raw_middleware.py", line 92, in __call__ await self.app(scope, receive, send_wrapper) File "starlette/middleware/base.py", line 189, in __call__ with collapse_excgroups(): File "contextlib.py", line 155, in __exit__ self.gen.throw(typ, value, traceback) File "starlette/_utils.py", line 93, in collapse_excgroups raise exc File "starlette/middleware/base.py", line 191, in __call__ response = await self.dispatch_func(request, call_next) File "galaxy/webapps/galaxy/fast_app.py", line 109, in add_x_frame_options response = await call_next(request) File "starlette/middleware/base.py", line 165, in call_next raise app_exc File "starlette/middleware/base.py", line 151, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "starlette/middleware/exceptions.py", line 65, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "starlette/_exception_handler.py", line 64, in wrapped_app raise exc File "starlette/_exception_handler.py", line 53, in wrapped_app await app(scope, receive, sender) File "starlette/routing.py", line 756, in __call__ await self.middleware_stack(scope, receive, send) File "starlette/routing.py", line 776, in app await route.handle(scope, receive, send) File "starlette/routing.py", line 297, in handle await self.app(scope, receive, send) File "starlette/routing.py", line 77, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "starlette/_exception_handler.py", line 64, in wrapped_app raise exc File "starlette/_exception_handler.py", line 53, in wrapped_app await app(scope, receive, sender) File "starlette/routing.py", line 72, in app response = await func(request) File "fastapi/routing.py", line 278, in app raw_response = await run_endpoint_function( File "fastapi/routing.py", line 193, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) File "starlette/concurrency.py", line 42, in run_in_threadpool return await anyio.to_thread.run_sync(func, *args) File "anyio/to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( File "anyio/_backends/_asyncio.py", line 2144, in run_sync_in_worker_thread return await future File "anyio/_backends/_asyncio.py", line 851, in run result = context.run(func, *args) File "galaxy/webapps/galaxy/api/jobs.py", line 410, in parameters_display_by_dataset return summarize_job_parameters(trans, job) File "galaxy/managers/jobs.py", line 1055, in summarize_job_parameters parameters = inputs_recursive(tool.inputs, params_objects, depth=1, upgrade_messages=upgrade_messages) File "galaxy/managers/jobs.py", line 994, in inputs_recursive element_id = element.id ``` which you can reproduce by connecting an optional dataset and a required dataset to a multiple="true" data parameter and then looking at the tool input parameters. --- client/src/api/schema/schema.ts | 2 +- .../JobParameters/JobParametersArrayValue.vue | 3 ++- lib/galaxy/managers/jobs.py | 13 ++++++++----- lib/galaxy/schema/jobs.py | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/client/src/api/schema/schema.ts b/client/src/api/schema/schema.ts index f878a162098a..9abd677c7b27 100644 --- a/client/src/api/schema/schema.ts +++ b/client/src/api/schema/schema.ts @@ -9132,7 +9132,7 @@ export interface components { * @description The values of the job parameter */ value?: - | components["schemas"]["EncodedJobParameterHistoryItem"][] + | (components["schemas"]["EncodedJobParameterHistoryItem"] | null)[] | number | number | boolean diff --git a/client/src/components/JobParameters/JobParametersArrayValue.vue b/client/src/components/JobParameters/JobParametersArrayValue.vue index 31be3694434a..014d0e6d12de 100644 --- a/client/src/components/JobParameters/JobParametersArrayValue.vue +++ b/client/src/components/JobParameters/JobParametersArrayValue.vue @@ -1,8 +1,9 @@