Loading client/src/components/User/APIKey/APIKeyItem.vue +11 −6 Original line number Diff line number Diff line <script setup> import { library } from "@fortawesome/fontawesome-svg-core"; import { faEye, faEyeSlash, faKey, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; import { getGalaxyInstance } from "app"; import CopyToClipboard from "components/CopyToClipboard"; import UtcDate from "components/UtcDate"; Loading @@ -6,6 +9,8 @@ import { ref } from "vue"; import svc from "./model/service"; library.add(faEye, faEyeSlash, faKey, faTrash); defineProps({ item: { type: Object, Loading Loading @@ -35,12 +40,7 @@ const deleteKey = () => { <b-card title="Current API key"> <div class="d-flex justify-content-between w-100"> <div class="w-100"> <b-input-group class="w-100" @blur="hover = false" @focus="hover = true" @mouseover="hover = true" @mouseleave="hover = false"> <b-input-group class="w-100"> <b-input-group-prepend> <b-input-group-text> <icon icon="key" /> Loading @@ -57,6 +57,11 @@ const deleteKey = () => { <b-input-group-text> <CopyToClipboard message="Key was copied to clipboard" :text="item.key" title="Copy key" /> </b-input-group-text> <b-button v-b-tooltip.hover title="Show/hide key" @click="hover = !hover"> <FontAwesomeIcon :icon="hover ? faEyeSlash : faEye" /> </b-button> <b-button title="Delete api key" @click="toggleDeleteModal"> <icon icon="trash" /> </b-button> Loading lib/galaxy/datatypes/tabular.py +1 −2 Original line number Diff line number Diff line Loading @@ -1811,7 +1811,7 @@ class CMAP(TabularData): with open(dataset.get_file_name()) as dataset_fh: comment_lines = 0 column_headers = None cleaned_column_types = None cleaned_column_types = [] number_of_columns = 0 for i, line in enumerate(dataset_fh): line = line.strip("\n") Loading @@ -1819,7 +1819,6 @@ class CMAP(TabularData): if line.startswith("#h"): column_headers = line.split("\t")[1:] elif line.startswith("#f"): cleaned_column_types = [] for column_type in line.split("\t")[1:]: if column_type == "Hex": cleaned_column_types.append("str") Loading lib/galaxy/tools/parameters/basic.py +1 −1 Original line number Diff line number Diff line Loading @@ -1517,7 +1517,7 @@ class ColumnListParameter(SelectToolParameter): except Exception: column_list = self.get_column_list(trans, other_values) if self.numerical: # If numerical was requested, filter columns based on metadata if hasattr(dataset, "metadata") and hasattr(dataset.metadata, "column_types"): if hasattr(dataset, "metadata") and getattr(dataset.metadata, "column_types", None) is not None: if len(dataset.metadata.column_types) >= len(column_list): numerics = [i for i, x in enumerate(dataset.metadata.column_types) if x in ["int", "float"]] column_list = [column_list[i] for i in numerics] Loading lib/galaxy/util/zipstream.py +2 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,8 @@ class ZipstreamWrapper: def get_headers(self) -> Dict[str, str]: headers = {} if self.archive_name: headers["Content-Disposition"] = f'attachment; filename="{self.archive_name}.zip"' archive_name = self.archive_name.encode("latin-1", "replace").decode("latin-1") headers["Content-Disposition"] = f'attachment; filename="{archive_name}.zip"' if self.upstream_mod_zip: headers["X-Archive-Files"] = "zip" else: Loading lib/galaxy_test/api/test_dataset_collections.py +8 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,14 @@ class TestDatasetCollectionsApi(ApiTestCase): namelist = archive.namelist() assert len(namelist) == 3, f"Expected 3 elements in [{namelist}]" def test_download_non_english_characters(self): with self.dataset_populator.test_history() as history_id: name = "دیتاست" payload = self.dataset_collection_populator.create_list_payload(history_id, name=name) hdca_id = self.dataset_populator.fetch(payload, wait=True).json()["outputs"][0]["id"] create_response = self._download_dataset_collection(history_id=history_id, hdca_id=hdca_id) self._assert_status_code_is(create_response, 200) @requires_new_user def test_hda_security(self): with self.dataset_populator.test_history(require_new=False) as history_id: Loading Loading
client/src/components/User/APIKey/APIKeyItem.vue +11 −6 Original line number Diff line number Diff line <script setup> import { library } from "@fortawesome/fontawesome-svg-core"; import { faEye, faEyeSlash, faKey, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; import { getGalaxyInstance } from "app"; import CopyToClipboard from "components/CopyToClipboard"; import UtcDate from "components/UtcDate"; Loading @@ -6,6 +9,8 @@ import { ref } from "vue"; import svc from "./model/service"; library.add(faEye, faEyeSlash, faKey, faTrash); defineProps({ item: { type: Object, Loading Loading @@ -35,12 +40,7 @@ const deleteKey = () => { <b-card title="Current API key"> <div class="d-flex justify-content-between w-100"> <div class="w-100"> <b-input-group class="w-100" @blur="hover = false" @focus="hover = true" @mouseover="hover = true" @mouseleave="hover = false"> <b-input-group class="w-100"> <b-input-group-prepend> <b-input-group-text> <icon icon="key" /> Loading @@ -57,6 +57,11 @@ const deleteKey = () => { <b-input-group-text> <CopyToClipboard message="Key was copied to clipboard" :text="item.key" title="Copy key" /> </b-input-group-text> <b-button v-b-tooltip.hover title="Show/hide key" @click="hover = !hover"> <FontAwesomeIcon :icon="hover ? faEyeSlash : faEye" /> </b-button> <b-button title="Delete api key" @click="toggleDeleteModal"> <icon icon="trash" /> </b-button> Loading
lib/galaxy/datatypes/tabular.py +1 −2 Original line number Diff line number Diff line Loading @@ -1811,7 +1811,7 @@ class CMAP(TabularData): with open(dataset.get_file_name()) as dataset_fh: comment_lines = 0 column_headers = None cleaned_column_types = None cleaned_column_types = [] number_of_columns = 0 for i, line in enumerate(dataset_fh): line = line.strip("\n") Loading @@ -1819,7 +1819,6 @@ class CMAP(TabularData): if line.startswith("#h"): column_headers = line.split("\t")[1:] elif line.startswith("#f"): cleaned_column_types = [] for column_type in line.split("\t")[1:]: if column_type == "Hex": cleaned_column_types.append("str") Loading
lib/galaxy/tools/parameters/basic.py +1 −1 Original line number Diff line number Diff line Loading @@ -1517,7 +1517,7 @@ class ColumnListParameter(SelectToolParameter): except Exception: column_list = self.get_column_list(trans, other_values) if self.numerical: # If numerical was requested, filter columns based on metadata if hasattr(dataset, "metadata") and hasattr(dataset.metadata, "column_types"): if hasattr(dataset, "metadata") and getattr(dataset.metadata, "column_types", None) is not None: if len(dataset.metadata.column_types) >= len(column_list): numerics = [i for i, x in enumerate(dataset.metadata.column_types) if x in ["int", "float"]] column_list = [column_list[i] for i in numerics] Loading
lib/galaxy/util/zipstream.py +2 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,8 @@ class ZipstreamWrapper: def get_headers(self) -> Dict[str, str]: headers = {} if self.archive_name: headers["Content-Disposition"] = f'attachment; filename="{self.archive_name}.zip"' archive_name = self.archive_name.encode("latin-1", "replace").decode("latin-1") headers["Content-Disposition"] = f'attachment; filename="{archive_name}.zip"' if self.upstream_mod_zip: headers["X-Archive-Files"] = "zip" else: Loading
lib/galaxy_test/api/test_dataset_collections.py +8 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,14 @@ class TestDatasetCollectionsApi(ApiTestCase): namelist = archive.namelist() assert len(namelist) == 3, f"Expected 3 elements in [{namelist}]" def test_download_non_english_characters(self): with self.dataset_populator.test_history() as history_id: name = "دیتاست" payload = self.dataset_collection_populator.create_list_payload(history_id, name=name) hdca_id = self.dataset_populator.fetch(payload, wait=True).json()["outputs"][0]["id"] create_response = self._download_dataset_collection(history_id=history_id, hdca_id=hdca_id) self._assert_status_code_is(create_response, 200) @requires_new_user def test_hda_security(self): with self.dataset_populator.test_history(require_new=False) as history_id: Loading