Unverified Commit 48487c56 authored by Dannon's avatar Dannon Committed by GitHub
Browse files

Merge pull request #14296 from mvdbeek/deleted_discarded_file_not_found_tweaks

[22.05] Deleted, discarded and deferred file not found tweaks
parents 9302dc7b 75470b13
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -101,9 +101,9 @@ export default {
            return `${getAppRoot()}workflows/${this.workflow.id}/invocations`;
        },
        urlViewShared() {
            return `${getAppRoot()}workflow/display_by_username_and_slug?username=${this.workflow.owner}&slug=${
                this.workflow.slug
            }`;
            return `${getAppRoot()}workflow/display_by_username_and_slug?username=${
                this.workflow.owner
            }&slug=${encodeURIComponent(this.workflow.slug)}`;
        },
        readOnly() {
            return !!this.workflow.shared;
+4 −2
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ from galaxy.datatypes.util.gff_util import (
    parse_gff3_attributes,
    parse_gff_attributes,
)
from galaxy.model import DatasetInstance
from galaxy.util import compression_utils
from . import (
    data,
@@ -167,10 +168,11 @@ class Interval(Tabular):
                    else:
                        empty_line_count += 1

    def displayable(self, dataset):
    def displayable(self, dataset: DatasetInstance):
        try:
            return (
                dataset.has_data()
                not dataset.dataset.purged
                and dataset.has_data()
                and dataset.state == dataset.states.OK
                and dataset.metadata.columns > 0
                and dataset.metadata.data_lines != 0
+4 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ from galaxy.datatypes.sniff import (
    iter_headers,
    validate_tabular,
)
from galaxy.model import DatasetInstance
from galaxy.util import compression_utils
from . import dataproviders

@@ -90,10 +91,11 @@ class TabularData(data.Text):
        if dataset.metadata.comment_lines:
            dataset.blurb = f"{dataset.blurb}, {util.commaify(str(dataset.metadata.comment_lines))} comments"

    def displayable(self, dataset):
    def displayable(self, dataset: DatasetInstance):
        try:
            return (
                dataset.has_data()
                not dataset.dataset.purged
                and dataset.has_data()
                and dataset.state == dataset.states.OK
                and dataset.metadata.columns > 0
                and dataset.metadata.data_lines != 0
+55 −48
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ from galaxy.managers.hdas import (
    HDAManager,
)
from galaxy.managers.histories import HistoryManager
from galaxy.model import Dataset
from galaxy.model.item_attrs import (
    UsesAnnotations,
    UsesItemRatings,
@@ -147,17 +148,27 @@ class DatasetInterface(BaseUIController, UsesAnnotations, UsesItemRatings, UsesE
            except Exception:
                data = None
        if not data:
            raise paste.httpexceptions.HTTPRequestRangeNotSatisfiable(f"Invalid reference dataset id: {str(hda_id)}.")
            raise web.httpexceptions.HTTPNotFound(f"Invalid reference dataset id: {str(hda_id)}.")
        if not self._can_access_dataset(trans, data):
            return trans.show_error_message("You are not allowed to access this dataset")
        if data.purged:
            return trans.show_error_message("The dataset you are attempting to view has been purged.")
        if data.deleted and not (trans.user_is_admin or (data.history and trans.get_user() == data.history.user)):
        elif data.deleted and not (trans.user_is_admin or (data.history and trans.get_user() == data.history.user)):
            return trans.show_error_message("The dataset you are attempting to view has been deleted.")
        if data.state == trans.model.Dataset.states.UPLOAD:
        elif data.state == Dataset.states.UPLOAD:
            return trans.show_error_message(
                "Please wait until this dataset finishes uploading before attempting to view it."
            )
        elif data.state == Dataset.states.DISCARDED:
            return trans.show_error_message("The dataset you are attempting to view has been discarded.")
        elif data.state == Dataset.states.DEFERRED:
            return trans.show_error_message(
                "The dataset you are attempting to view has deferred data. You can only use this dataset as input for jobs."
            )
        elif data.state == Dataset.states.PAUSED:
            return trans.show_error_message(
                "The dataset you are attempting to view is in paused state. One of the inputs for the job that creates this dataset has failed."
            )
        return data

    @web.expose
@@ -563,11 +574,9 @@ class DatasetInterface(BaseUIController, UsesAnnotations, UsesItemRatings, UsesE
    @web.expose
    def display_by_username_and_slug(self, trans, username, slug, filename=None, preview=True):
        """Display dataset by username and slug; because datasets do not yet have slugs, the slug is the dataset's id."""
        id = slug
        decoded_id = self.decode_id(id)
        dataset = self.hda_manager.get_accessible(decoded_id, trans.user)
        dataset = self.hda_manager.error_if_uploading(dataset)
        if dataset:
        dataset = self._check_dataset(trans, slug)
        if not isinstance(dataset, trans.app.model.DatasetInstance):
            return dataset
        # Filename used for composite types.
        if filename:
            return self.display(trans, dataset_id=slug, filename=filename)
@@ -610,8 +619,6 @@ class DatasetInterface(BaseUIController, UsesAnnotations, UsesItemRatings, UsesE
                num_ratings=num_ratings,
                first_chunk=first_chunk,
            )
        else:
            raise web.httpexceptions.HTTPNotFound()

    @web.expose
    def get_item_content_async(self, trans, id):
+8 −1
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ from pydantic import (
    BaseModel,
    Extra,
    Field,
    ValidationError,
)

from galaxy import exceptions
@@ -254,4 +255,10 @@ class DatasetCollectionsService(ServiceBase, UsesLibraryMixinItems):
            return result

        rval = [serialize_element(el) for el in contents]
        try:
            return DatasetCollectionContentElements.parse_obj(rval)
        except ValidationError:
            log.exception(
                f"Serializing DatasetCollectionContentsElements failed. Collection is populated: {hdca.collection.populated}"
            )
            raise