diff --git a/config/plugins/visualizations/editor/templates/editor.mako b/config/plugins/visualizations/editor/templates/editor.mako index 385edbba6205..1046842c3417 100755 --- a/config/plugins/visualizations/editor/templates/editor.mako +++ b/config/plugins/visualizations/editor/templates/editor.mako @@ -62,11 +62,11 @@ const ajax_url = "${h.url_for( controller='/datasets', action='index')}/" + hda_id + "/display"; const data = httpGet(ajax_url); - document.getElementById("editor").innerHTML = data; var editor = ace.edit("editor", { mode: "ace/mode/powershell", theme: "ace/theme/textmate" }); + editor.setValue(data, -1); diff --git a/lib/galaxy/config/__init__.py b/lib/galaxy/config/__init__.py index 554018472dc9..ce189b894fdc 100644 --- a/lib/galaxy/config/__init__.py +++ b/lib/galaxy/config/__init__.py @@ -597,7 +597,7 @@ def admin_users(self): @admin_users.setter def admin_users(self, value): self._admin_users = value - self.admin_users_list = listify(value) + self.admin_users_list = listify(value, do_strip=True) def is_admin_user(self, user: Optional["User"]) -> bool: """Determine if the provided user is listed in `admin_users`.""" diff --git a/lib/galaxy/model/store/__init__.py b/lib/galaxy/model/store/__init__.py index d093e3c24838..a27e8c57b10c 100644 --- a/lib/galaxy/model/store/__init__.py +++ b/lib/galaxy/model/store/__init__.py @@ -578,10 +578,11 @@ def handle_dataset_object_edit(dataset_instance, dataset_attrs): self._attach_raw_id_if_editing(dataset_instance, dataset_attrs) # Older style... - if "uuid" in dataset_attrs: - dataset_instance.dataset.uuid = dataset_attrs["uuid"] - if "dataset_uuid" in dataset_attrs: - dataset_instance.dataset.uuid = dataset_attrs["dataset_uuid"] + if self.import_options.allow_edit: + if "uuid" in dataset_attrs: + dataset_instance.dataset.uuid = dataset_attrs["uuid"] + if "dataset_uuid" in dataset_attrs: + dataset_instance.dataset.uuid = dataset_attrs["dataset_uuid"] self._session_add(dataset_instance) diff --git a/lib/galaxy/model/store/discover.py b/lib/galaxy/model/store/discover.py index 2fb7f386be7e..b59e8d54eae2 100644 --- a/lib/galaxy/model/store/discover.py +++ b/lib/galaxy/model/store/discover.py @@ -132,11 +132,6 @@ def create_dataset( ) self.persist_object(primary_data) - if init_from: - self.permission_provider.copy_dataset_permissions(init_from, primary_data) - primary_data.state = init_from.state - else: - self.permission_provider.set_default_hda_permissions(primary_data) else: ld = galaxy.model.LibraryDataset(folder=library_folder, name=name) ldda = galaxy.model.LibraryDatasetDatasetAssociation( @@ -208,6 +203,7 @@ def create_dataset( filename=filename, link_data=link_data, output_name=output_name, + init_from=init_from, ) else: storage_callbacks.append( @@ -218,11 +214,14 @@ def create_dataset( filename=filename, link_data=link_data, output_name=output_name, + init_from=init_from, ) ) return primary_data - def finalize_storage(self, primary_data, dataset_attributes, extra_files, filename, link_data, output_name): + def finalize_storage( + self, primary_data, dataset_attributes, extra_files, filename, link_data, output_name, init_from + ): if primary_data.dataset.purged: # metadata won't be set, maybe we should do that, then purge ? primary_data.dataset.file_size = 0 @@ -243,6 +242,13 @@ def finalize_storage(self, primary_data, dataset_attributes, extra_files, filena else: # We are sure there are no extra files, so optimize things that follow by settting total size also. primary_data.set_size(no_extra_files=True) + + if init_from: + self.permission_provider.copy_dataset_permissions(init_from, primary_data) + primary_data.state = init_from.state + else: + self.permission_provider.set_default_hda_permissions(primary_data) + # TODO: this might run set_meta after copying the file to the object store, which could be inefficient if job working directory is closer to the node. self.set_datasets_metadata(datasets=[primary_data], datasets_attributes=[dataset_attributes]) diff --git a/test/integration/objectstore/test_jobs.py b/test/integration/objectstore/test_jobs.py index 30383b8e5372..3d1bab41e37e 100644 --- a/test/integration/objectstore/test_jobs.py +++ b/test/integration/objectstore/test_jobs.py @@ -3,12 +3,17 @@ import os import string +from galaxy_test.driver.integration_util import ( + integration_module_instance, + integration_tool_runner, +) from ._base import ( BaseObjectStoreIntegrationTestCase, files_count, ) +from .test_selection_with_resource_parameters import DISTRIBUTED_OBJECT_STORE_CONFIG_TEMPLATE -DISTRIBUTED_OBJECT_STORE_CONFIG_TEMPLATE = string.Template( +HIERARCHICAL_OBJECT_STORE_CONFIG_TEMPLATE = string.Template( """ @@ -39,7 +44,20 @@ TEST_INPUT_FILES_CONTENT = "1 2 3" -class TestObjectStoreJobsIntegration(BaseObjectStoreIntegrationTestCase): +class TestDistributedObjectStore(BaseObjectStoreIntegrationTestCase): + @classmethod + def handle_galaxy_config_kwds(cls, config): + super().handle_galaxy_config_kwds(config) + config["metadata_strategy"] = "directory" + config["object_store_store_by"] = "uuid" + cls._configure_object_store(DISTRIBUTED_OBJECT_STORE_CONFIG_TEMPLATE, config) + + +instance = integration_module_instance(TestDistributedObjectStore) +test_tools = integration_tool_runner(["all_output_types"]) + + +class TestObjectStoreJobsIntegration(TestDistributedObjectStore): # setup by _configure_object_store files1_path: str files2_path: str @@ -48,7 +66,7 @@ class TestObjectStoreJobsIntegration(BaseObjectStoreIntegrationTestCase): @classmethod def handle_galaxy_config_kwds(cls, config): super().handle_galaxy_config_kwds(config) - cls._configure_object_store(DISTRIBUTED_OBJECT_STORE_CONFIG_TEMPLATE, config) + cls._configure_object_store(HIERARCHICAL_OBJECT_STORE_CONFIG_TEMPLATE, config) def setUp(self): super().setUp() @@ -68,7 +86,7 @@ def setUp(self): def test_files_count_and_content_in_each_objectstore_backend(self): """ According to the ObjectStore configuration given in the - `DISTRIBUTED_OBJECT_STORE_CONFIG_TEMPLATE` variable, datasets + `HIERARCHICAL_OBJECT_STORE_CONFIG_TEMPLATE` variable, datasets can be stored on three backends, named: - primary/files1; - primary/files2; diff --git a/test/integration/test_extended_metadata.py b/test/integration/test_extended_metadata.py index 50c21940cfba..94240052147a 100644 --- a/test/integration/test_extended_metadata.py +++ b/test/integration/test_extended_metadata.py @@ -43,6 +43,7 @@ "collection_creates_dynamic_nested_from_json_elements", "implicit_conversion", "environment_variables", + "all_output_types", ]