Improves Dataverse integration by handling file access for instances where FilePIDsEnabled is false and files use database IDs instead of persistent IDs.
Enhances path parsing, access URL construction, plugin URI generation, and file listing to robustly differentiate between persistent and database identifiers.
Refines error handling for authentication and not-found scenarios to improve reliability and clarity.
- Change "Expires soon!" to "Expires today" when less than 1 day remains
- Add proper singular handling ("Expires in 1 day" instead of "1 days")
- Show full date and time in tooltip using toLocaleString() instead of just
the date, so users can see the exact expiration time in their local timezone
Fixes https://github.com/galaxyproject/galaxy/issues/21559
HDAs where _state is set (indicating failed_metadata or setting_metadata)
were not being filtered out when looking for cached jobs. This change adds
checks to require _state to be NULL (which indicates metadata is OK) in the
following cache lookup methods:
- _build_stmt_for_hda: filters the requested input HDA
- _build_stmt_for_hdca: filters leaf HDAs in the reference collection
- _build_stmt_for_dce: filters leaf HDAs in both collection and direct
HDA cases
Also adds integration tests to verify that job cache lookups correctly
exclude HDAs and HDCA elements in failed_metadata state.
Fix the following error at Galaxy startup:
```
Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.9.23/x64/lib/python3.9/logging/config.py", line 543, in configure
formatters[name] = self.configure_formatter(
File "/opt/hostedtoolcache/Python/3.9.23/x64/lib/python3.9/logging/config.py", line 655, in configure_formatter
result = self.configure_custom(config)
File "/opt/hostedtoolcache/Python/3.9.23/x64/lib/python3.9/logging/config.py", line 470, in configure_custom
c = self.resolve(c)
File "/opt/hostedtoolcache/Python/3.9.23/x64/lib/python3.9/logging/config.py", line 391, in resolve
self.importer(used)
File "/home/runner/work/galaxy/galaxy/galaxy root/lib/galaxy/web_stack/__init__.py", line 13, in <module>
from galaxy.model import database_utils
File "/home/runner/work/galaxy/galaxy/galaxy root/lib/galaxy/model/__init__.py", line 144, in <module>
from galaxy.files.templates import (
File "/home/runner/work/galaxy/galaxy/galaxy root/lib/galaxy/files/__init__.py", line 13, in <module>
from galaxy.files.sources import (
File "/home/runner/work/galaxy/galaxy/galaxy root/lib/galaxy/files/sources/__init__.py", line 19, in <module>
from galaxy.files.models import (
File "/home/runner/work/galaxy/galaxy/galaxy root/lib/galaxy/files/models.py", line 135, in <module>
class FilesSourceProperties(StrictModel):
File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.9/site-packages/pydantic/_internal/_model_construction.py", line 242, in __new__
set_model_fields(cls, config_wrapper=config_wrapper, ns_resolver=ns_resolver)
File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.9/site-packages/pydantic/_internal/_model_construction.py", line 566, in set_model_fields
fields, class_vars = collect_model_fields(cls, config_wrapper, ns_resolver, typevars_map=typevars_map)
File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.9/site-packages/pydantic/_internal/_fields.py", line 364, in collect_model_fields
field_info = FieldInfo_.from_annotated_attribute(ann_type, assigned_value, _source=AnnotationSource.CLASS)
File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.9/site-packages/pydantic/fields.py", line 443, in from_annotated_attribute
field_info = FieldInfo._construct(
File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.9/site-packages/pydantic/fields.py", line 519, in _construct
merged_field_info = cls(**merged_kwargs)
File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.9/site-packages/pydantic/fields.py", line 232, in __init__
Error: raise TypeError('cannot specify both default and default_factory')
TypeError: cannot specify both default and default_factory
```
Backend:
- Add column_definitions_compatible() in sample_sheet_util.py
- Filter incompatible collections in match_collections()
- Include column_definitions in HDCA options response
Frontend:
- Add column_definitions to DataOption type
- Check compatibility in canAcceptSrc for drag/drop
Fixes#21472🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>