Merge branch 'release_23.2' into 'release_23.3'

This commit is contained in:
John Davis
2024-01-29 13:27:15 -05:00
13 changed files with 87 additions and 14 deletions
@@ -36,7 +36,7 @@ const defaultOptions = {
{ id: "hda1", hid: 1, name: "hdaName1", src: "hda", tags: ["tag1"] },
{ id: "hda2", hid: 2, name: "hdaName2", src: "hda", tags: ["tag1", "tag2"] },
{ id: "hda3", hid: 3, name: "hdaName3", src: "hda", tags: ["tag2", "tag3"] },
{ id: "hda3", hid: 4, name: "hdaName4", src: "hda" },
{ id: "hda4", hid: 4, name: "hdaName4", src: "hda" },
],
hdca: [
{ id: "hdca5", hid: 5, name: "hdcaName5", src: "hdca" },
@@ -61,7 +61,7 @@ describe("FormData", () => {
const value_1 = {
batch: false,
product: false,
values: [{ id: "hda3", src: "hda", map_over_type: null }],
values: [{ id: "hda4", src: "hda", map_over_type: null }],
};
const options = wrapper.find(".btn-group").findAll("button");
expect(options.length).toBe(4);
@@ -122,7 +122,7 @@ describe("FormData", () => {
expect(wrapper.emitted().input.length).toEqual(1);
const selectedValues = wrapper.findAll(SELECTED_VALUE);
expect(selectedValues.length).toBe(2);
expect(selectedValues.at(0).text()).toBe("4: hdaName4");
expect(selectedValues.at(0).text()).toBe("3: hdaName3");
expect(selectedValues.at(1).text()).toBe("2: hdaName2");
const value_0 = {
batch: false,
@@ -153,6 +153,39 @@ describe("FormData", () => {
expect(wrapper.emitted().input[2][0]).toEqual(null);
});
it("properly sorts multiple datasets", async () => {
const wrapper = createTarget({
value: {
// the order of values does not matter here
values: [
{ id: "hda2", src: "hda" },
{ id: "hda3", src: "hda" },
{ id: "hda1", src: "hda" },
],
},
multiple: true,
optional: true,
options: defaultOptions,
});
const selectedValues = wrapper.findAll(SELECTED_VALUE);
expect(selectedValues.length).toBe(3);
// the values in the multiselect are sorted by hid DESC
expect(selectedValues.at(0).text()).toBe("3: hdaName3");
expect(selectedValues.at(1).text()).toBe("2: hdaName2");
expect(selectedValues.at(2).text()).toBe("1: hdaName1");
await selectedValues.at(0).trigger("click");
const value_sorted = {
batch: false,
product: false,
values: [
// the values in the emitted input are sorted by hid ASC
{ id: "hda1", map_over_type: null, src: "hda" },
{ id: "hda2", map_over_type: null, src: "hda" },
],
};
expect(wrapper.emitted().input[1][0]).toEqual(value_sorted);
});
it("dataset collection as hda", async () => {
const wrapper = createTarget({
value: { values: [{ id: "dce1", src: "dce" }] },
@@ -111,6 +111,17 @@ const currentValue = computed({
return undefined;
},
set: (val) => {
if (val && Array.isArray(val) && val.length > 0) {
val.sort((a, b) => {
const aHid = a.hid;
const bHid = b.hid;
if (aHid && bHid) {
return aHid - bHid;
} else {
return 0;
}
});
}
$emit("input", createValue(val));
},
});
+1 -1
View File
@@ -1,6 +1,6 @@
===========================================================
2023 Galaxy Release (v 23.0)
23.0 Galaxy Release (April 2023)
===========================================================
.. include:: _header.rst
+1 -1
View File
@@ -1,6 +1,6 @@
===========================================================
2023 Galaxy Release (v 23.0)
23.0 Galaxy Release (April 2023)
===========================================================
.. include:: _header.rst
+1 -1
View File
@@ -1,6 +1,6 @@
===========================================================
Mid 2023 Galaxy Release (v 23.1)
23.1 Galaxy Release (June 2023)
===========================================================
.. include:: _header.rst
+1 -1
View File
@@ -1,6 +1,6 @@
===========================================================
June 2023 Galaxy Release (v 23.1)
23.1 Galaxy Release (June 2023)
===========================================================
.. include:: _header.rst
+15
View File
@@ -160,6 +160,12 @@ Enhancements
`Pull Request 17178`_
.. enhancement
* Make release titles consistent
(thanks to `@martenson <https://github.com/martenson>`__).
`Pull Request 17341`_
* Use python-isal for fast zip deflate compression in rocrate export
(thanks to `@mvdbeek <https://github.com/mvdbeek>`__).
`Pull Request 17342`_
* Improve embed performance
(thanks to `@ElectronicBlueberry <https://github.com/ElectronicBlueberry>`__).
`Pull Request 17326`_
@@ -378,6 +384,9 @@ Enhancements
`Pull Request 17182`_
.. small_enhancement
* Ensure release notes include all PRs added during the freeze by re-running the release note bootstrapping
(thanks to `@jdavcs <https://github.com/jdavcs>`__).
`Pull Request 17344`_
* Tool Shed client build separation
(thanks to `@dannon <https://github.com/dannon>`__).
`Pull Request 15000`_
@@ -687,6 +696,12 @@ Fixes
`Pull Request 17055`_
.. bug
* Write to a temp filename in posix file source plugin
(thanks to `@natefoo <https://github.com/natefoo>`__).
`Pull Request 17350`_
* Always store multi select data input values in fixed order
(thanks to `@guerler <https://github.com/guerler>`__).
`Pull Request 17352`_
* Remove duplicates when copying sections for tool panel view
(thanks to `@bernt-matthias <https://github.com/bernt-matthias>`__).
`Pull Request 17117`_
+2 -2
View File
@@ -1,6 +1,6 @@
===========================================================
Late 2023 Galaxy Release (v 23.2)
23.2 Galaxy Release (January 2024)
===========================================================
.. include:: _header.rst
@@ -12,7 +12,7 @@ Highlights
**InvenioRDM** has been integrated into Galaxy. Users can now import files directly from InvenioRDM repositories into Galaxy, and publish records containing artifacts (Histories, datasets, etc.) from Galaxy to InvenioRDM.
**Miscellaneous improvements.** There have been numerous updates to the UI, including Galaxy Help forum integration, improved navigation and styling, helpful warnings, improvements to search, etc. Check out the `23.2 user release notes <23.2_announce_user.html>`__ for all the details.
**Miscellaneous improvements.** There have been numerous updates to the UI, including Galaxy Help forum integration, improved navigation and styling, helpful warnings, improvements to search, etc. Check out the `23.2 user release notes <23.2_announce_user.html>`__ for all the details.
Are you an admin? See the Administration Notes below, and check out `some admin relevant PRs <https://github.com/galaxyproject/galaxy/pulls?q=label%3Ahighlight%2Fadmin+milestone%3A23.2+is%3Aclosed+is%3Apr>`__.
+1 -1
View File
@@ -1,6 +1,6 @@
===========================================================
Late 2023 Galaxy Release (v 23.2)
23.2 Galaxy Release (January 2024)
===========================================================
.. include:: _header.rst
+6
View File
@@ -1,5 +1,11 @@
.. github_links
.. _Pull Request 17341: https://github.com/galaxyproject/galaxy/pull/17341
.. _Pull Request 17342: https://github.com/galaxyproject/galaxy/pull/17342
.. _Pull Request 17343: https://github.com/galaxyproject/galaxy/pull/17343
.. _Pull Request 17344: https://github.com/galaxyproject/galaxy/pull/17344
.. _Pull Request 17350: https://github.com/galaxyproject/galaxy/pull/17350
.. _Pull Request 17352: https://github.com/galaxyproject/galaxy/pull/17352
.. _Pull Request 15238: https://github.com/galaxyproject/galaxy/pull/15238
.. _Pull Request 16883: https://github.com/galaxyproject/galaxy/pull/16883
.. _Pull Request 17117: https://github.com/galaxyproject/galaxy/pull/17117
+1 -1
View File
@@ -2,7 +2,7 @@
:orphan:
===========================================================
February 2024 Galaxy Release (v 24.0)
24.0 Galaxy Release (Early 2024)
===========================================================
+6 -2
View File
@@ -105,14 +105,18 @@ class PosixFilesSource(BaseFilesSource):
target_native_path = os.path.normpath(target_native_path)
assert target_native_path.startswith(os.path.normpath(effective_root))
target_native_path_parent = os.path.dirname(target_native_path)
target_native_path_parent, target_native_path_name = os.path.split(target_native_path)
if not os.path.exists(target_native_path_parent):
if self.allow_subdir_creation:
os.makedirs(target_native_path_parent)
else:
raise Exception("Parent directory does not exist.")
shutil.copyfile(native_path, target_native_path)
# Use a temporary name while writing so anything that consumes written files can detect when they've completed,
# and identify interrupted writes
target_native_path_part = os.path.join(target_native_path_parent, f"_{target_native_path_name}.part")
shutil.copyfile(native_path, target_native_path_part)
os.rename(target_native_path_part, target_native_path)
def _to_native_path(self, source_path: str, user_context=None):
source_path = os.path.normpath(source_path)
+5 -1
View File
@@ -912,7 +912,8 @@ class PurgeHistorylessHDAs(PurgesHDAs, RemovesMetadataFiles, RequiresDiskUsageRe
FROM dataset
WHERE history_id IS NULL{force_retry_sql}{object_store_id_sql}
AND history_dataset_association.update_time < (NOW() AT TIME ZONE 'utc' - interval '%(days)s days')
RETURNING id),
RETURNING history_dataset_association.id as id,
history_dataset_association.history_id as history_id),
hda_events
AS (INSERT INTO cleanup_event_hda_association
(create_time, cleanup_event_id, hda_id)
@@ -920,12 +921,15 @@ class PurgeHistorylessHDAs(PurgesHDAs, RemovesMetadataFiles, RequiresDiskUsageRe
FROM purged_hda_ids),
{purge_hda_dependencies_sql}
SELECT purged_hda_ids.id AS purged_hda_id,
history.user_id AS recalculate_disk_usage_user_id,
deleted_metadata_file_ids.id AS deleted_metadata_file_id,
deleted_metadata_file_ids.uuid AS deleted_metadata_file_uuid,
deleted_metadata_file_ids.object_store_id AS object_store_id,
deleted_icda_ids.id AS deleted_icda_id,
deleted_icda_ids.hda_id AS deleted_icda_hda_id
FROM purged_hda_ids
LEFT OUTER JOIN history
ON purged_hda_ids.history_id = history.id
LEFT OUTER JOIN deleted_metadata_file_ids
ON deleted_metadata_file_ids.hda_id = purged_hda_ids.id
LEFT OUTER JOIN deleted_icda_ids