Unverified Commit 4c8b4bf2 authored by John Chilton's avatar John Chilton Committed by GitHub
Browse files

Merge pull request #18249 from mvdbeek/fix_no_elements_exception_extract_dataset

[24.0] Raise exception when extracting dataset from collection without datasets
parents 1dd31f08 455a851e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6507,7 +6507,7 @@ class DatasetCollection(Base, Dictifiable, UsesAnnotations, Serializable):
        return elements

    @property
    def first_dataset_element(self):
    def first_dataset_element(self) -> Optional[HistoryDatasetAssociation]:
        for element in self.elements:
            if element.is_collection:
                first_element = element.child_collection.first_dataset_element
+5 −3
Original line number Diff line number Diff line
@@ -3355,18 +3355,20 @@ class ExtractDatasetCollectionTool(DatabaseOperationTool):
        how = incoming["which"]["which_dataset"]
        if how == "first":
            extracted_element = collection.first_dataset_element
            if not extracted_element:
                raise exceptions.RequestParameterInvalidException("Input collection has no dataset elements.")
        elif how == "by_identifier":
            try:
                extracted_element = collection[incoming["which"]["identifier"]]
            except KeyError as e:
                raise exceptions.MessageException(e.args[0])
                raise exceptions.RequestParameterInvalidException(e.args[0])
        elif how == "by_index":
            try:
                extracted_element = collection[int(incoming["which"]["index"])]
            except KeyError as e:
                raise exceptions.MessageException(e.args[0])
                raise exceptions.RequestParameterInvalidException(e.args[0])
        else:
            raise exceptions.MessageException("Invalid tool parameters.")
            raise exceptions.RequestParameterInvalidException("Invalid tool parameters.")
        extracted = extracted_element.element_object
        extracted_o = extracted.copy(
            copy_tags=extracted.tags, new_name=extracted_element.element_identifier, flush=False