Commit db2f14a
committed
feat: add workflow missing-tools install request button
When a workflow run fails because required tools are not installed, Galaxy
now detects which tools are missing and surfaces a one-click
'Request Installation' button so users can notify admins without leaving
the workflow run page.
Backend changes:
- workflows.py: pass missing_tool_ids as extra_error_info on the
MessageException so the list is serialised into the JSON error response
- notifications.py: add optional tool_ids and workflow_name fields to
ToolRequestNotificationContent so admin notifications include the
workflow context
- tool_request_form.py: mirror the same two fields on ToolRequestFormData
and wire them through to the notification content
- test_tool_request_form.py: add integration test that submits a request
with tool_ids + workflow_name and verifies both appear in the admin
notification
Frontend changes (client/src/components/Workflow/Run/):
- services.js: add WorkflowMissingToolsError class (extends Error, carries
missingToolIds[]); update getRunData() catch to detect missing_tool_ids
in the error response and throw the typed error before rethrowSimple()
would strip structured data
- WorkflowMissingToolsRequest.vue: new component — shows a button with
count badge, a GModal confirmation dialog, and uses localStorage keyed
on the sorted tool-ID set to disable the button after a successful
request (avoids hammering); hidden for anonymous users and when the
feature flag enable_tool_request_form is false; falls back gracefully
when workflowName is not yet available
- WorkflowMissingToolsRequest.test.ts: 25-test suite covering visibility
rules (feature flag, anonymous, empty IDs), cancel path, payload shape,
singular/plural copy, localStorage deduplication, storage-key sorting,
in-flight disabled state, error recovery/retry, and modal re-open
- WorkflowRun.vue: import and render WorkflowMissingToolsRequest inside
the danger BAlert when a WorkflowMissingToolsError is caught; call
getWorkflowInfo() as a best-effort fallback to populate workflowName on
both the standard and instance (props.instance) code paths
- schema.ts: add tool_ids and workflow_name to ToolRequestFormData type1 parent 702da4d commit db2f14a
9 files changed
Lines changed: 686 additions & 9 deletions
File tree
- client/src
- api/schema
- components/Workflow/Run
- lib/galaxy
- managers
- schema
- webapps/galaxy/services
- test/integration
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23583 | 23583 | | |
23584 | 23584 | | |
23585 | 23585 | | |
| 23586 | + | |
| 23587 | + | |
| 23588 | + | |
| 23589 | + | |
| 23590 | + | |
23586 | 23591 | | |
23587 | 23592 | | |
23588 | 23593 | | |
| |||
23593 | 23598 | | |
23594 | 23599 | | |
23595 | 23600 | | |
| 23601 | + | |
| 23602 | + | |
| 23603 | + | |
| 23604 | + | |
| 23605 | + | |
23596 | 23606 | | |
23597 | 23607 | | |
23598 | 23608 | | |
| |||
23684 | 23694 | | |
23685 | 23695 | | |
23686 | 23696 | | |
| 23697 | + | |
| 23698 | + | |
| 23699 | + | |
| 23700 | + | |
| 23701 | + | |
23687 | 23702 | | |
23688 | 23703 | | |
23689 | 23704 | | |
| |||
23694 | 23709 | | |
23695 | 23710 | | |
23696 | 23711 | | |
| 23712 | + | |
| 23713 | + | |
| 23714 | + | |
| 23715 | + | |
| 23716 | + | |
23697 | 23717 | | |
23698 | 23718 | | |
23699 | 23719 | | |
| |||
0 commit comments