mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Fix re-run with DCE inputs
This commit is contained in:
@@ -424,12 +424,12 @@ const View = Backbone.View.extend({
|
||||
const select_options = { hda: [], hdca: [] };
|
||||
_.each(options, (items, src) => {
|
||||
_.each(items, (item) => {
|
||||
self._patchValue(item);
|
||||
self._patchValue(item, src);
|
||||
const current_src = item.src || src;
|
||||
const addOption = !this.model.attributes.tag || item.tags.includes(this.model.attributes.tag);
|
||||
if (addOption) {
|
||||
select_options[current_src].push({
|
||||
hid: item.hid,
|
||||
hid: item.hid || Infinity, // if we got no hid we have a "Selected" item
|
||||
keep: item.keep,
|
||||
label: `${item.hid || "Selected"}: ${item.name}`,
|
||||
value: item.id,
|
||||
@@ -455,7 +455,12 @@ const View = Backbone.View.extend({
|
||||
list.push(value.id);
|
||||
});
|
||||
// sniff first suitable field type from config list
|
||||
const src = new_value.values[0].src;
|
||||
let src = new_value.values[0].src;
|
||||
if (src === "dce") {
|
||||
src =
|
||||
this.cache[`dce${new_value.values[0].id}_hda`]?.src ||
|
||||
this.cache[`dce${new_value.values[0].id}_hdca`]?.src;
|
||||
}
|
||||
const multiple = new_value.values.length > 1;
|
||||
for (let i = 0; i < this.config.length; i++) {
|
||||
const field = this.fields[i];
|
||||
@@ -480,11 +485,11 @@ const View = Backbone.View.extend({
|
||||
|
||||
/** Library datasets are displayed and selected together with history datasets,
|
||||
Dataset collection elements are displayed together with history dataset collections **/
|
||||
_patchValue: function (v) {
|
||||
const patchTo = { ldda: "hda", dce: "hdca" };
|
||||
_patchValue: function (v, src) {
|
||||
const patchTo = { ldda: "hda", dce: src };
|
||||
if (v.values) {
|
||||
_.each(v.values, (v) => {
|
||||
this._patchValue(v);
|
||||
this._patchValue(v, src);
|
||||
});
|
||||
} else if (patchTo[v.src]) {
|
||||
v.origin = v.src;
|
||||
|
||||
@@ -520,9 +520,7 @@ class GalaxyRBACAgent(RBACAgent):
|
||||
|
||||
return True
|
||||
|
||||
def can_access_collection(
|
||||
self, user_roles: List[galaxy.model.Role], collection: galaxy.model.DatasetCollection
|
||||
):
|
||||
def can_access_collection(self, user_roles: List[galaxy.model.Role], collection: galaxy.model.DatasetCollection):
|
||||
action_tuples = collection.dataset_action_tuples
|
||||
if not self.can_access_datasets(user_roles, action_tuples):
|
||||
return False
|
||||
|
||||
@@ -2092,6 +2092,9 @@ class DataToolParameter(BaseDataToolParameter):
|
||||
elif single_value["src"] == "ldda":
|
||||
decoded_id = trans.security.decode_id(single_value["id"])
|
||||
rval.append(trans.sa_session.query(LibraryDatasetDatasetAssociation).get(decoded_id))
|
||||
elif single_value["src"] == "dce":
|
||||
decoded_id = trans.security.decode_id(single_value["id"])
|
||||
rval.append(trans.sa_session.query(DatasetCollectionElement).get(decoded_id))
|
||||
else:
|
||||
raise ValueError(f"Unknown input source {single_value['src']} passed to job submission API.")
|
||||
elif isinstance(
|
||||
@@ -2127,6 +2130,9 @@ class DataToolParameter(BaseDataToolParameter):
|
||||
elif value["src"] == "hdca":
|
||||
decoded_id = trans.security.decode_id(value["id"])
|
||||
rval.append(trans.sa_session.query(HistoryDatasetCollectionAssociation).get(decoded_id))
|
||||
elif value["src"] == "dce":
|
||||
decoded_id = trans.security.decode_id(value["id"])
|
||||
rval.append(trans.sa_session.query(DatasetCollectionElement).get(decoded_id))
|
||||
else:
|
||||
raise ValueError(f"Unknown input source {value['src']} passed to job submission API.")
|
||||
elif str(value).startswith("__collection_reduce__|"):
|
||||
@@ -2280,6 +2286,28 @@ class DataToolParameter(BaseDataToolParameter):
|
||||
value["map_over_type"] = subcollection_type
|
||||
return list.append(value)
|
||||
|
||||
def append_dce(dce):
|
||||
if dce.hda:
|
||||
# well this isn't good, but what's the alternative ?
|
||||
# we should be precise about what we're (re-)running here.
|
||||
key = "hda"
|
||||
else:
|
||||
key = "hdca"
|
||||
d["options"][key].append(
|
||||
{
|
||||
"id": trans.security.encode_id(dce.id),
|
||||
"name": dce.element_identifier,
|
||||
"src": "dce",
|
||||
"tags": [],
|
||||
"keep": True,
|
||||
}
|
||||
)
|
||||
|
||||
# append DCE
|
||||
if isinstance(other_values.get(self.name), DatasetCollectionElement):
|
||||
dce = other_values[self.name]
|
||||
append_dce(dce)
|
||||
|
||||
# add datasets
|
||||
hda_list = util.listify(other_values.get(self.name))
|
||||
# Prefetch all at once, big list of visible, non-deleted datasets.
|
||||
@@ -2299,6 +2327,8 @@ class DataToolParameter(BaseDataToolParameter):
|
||||
else:
|
||||
hda_state = "unavailable"
|
||||
append(d["options"]["hda"], hda, f"({hda_state}) {hda.name}", "hda", True)
|
||||
elif isinstance(hda, DatasetCollectionElement):
|
||||
append_dce(hda)
|
||||
|
||||
# add dataset collections
|
||||
dataset_collection_matcher = dataset_matcher_factory.dataset_collection_matcher(dataset_matcher)
|
||||
@@ -2460,7 +2490,7 @@ class DataCollectionToolParameter(BaseDataToolParameter):
|
||||
# append DCE
|
||||
if isinstance(other_values.get(self.name), DatasetCollectionElement):
|
||||
dce = other_values[self.name]
|
||||
d["options"]["dce"].append(
|
||||
d["options"]["hdca"].append(
|
||||
{
|
||||
"id": trans.security.encode_id(dce.id),
|
||||
"hid": None,
|
||||
|
||||
Reference in New Issue
Block a user