Add delete method to manager

This commit is contained in:
davelopez
2021-01-19 12:57:24 +01:00
parent 712e305dc5
commit 21b3ac19f3
+27 -7
View File
@@ -1,6 +1,9 @@
from pathlib import Path
from typing import Dict
from typing import (
Dict,
Optional,
)
from galaxy import exceptions
from galaxy.app import StructuredApp
@@ -47,12 +50,7 @@ class ToolDataManager:
"""Reloads a tool data table."""
data_table = self._data_table(name)
data_table.reload_from_files()
self._app.queue_worker.send_control_task(
'reload_tool_data_tables',
noop_self=True,
kwargs={'table_name': name}
)
return self.show(name)
return self._reload_data_table(name)
def get_field_file_path(self, table_name: str, field_name: str, file_name: str) -> Path:
"""Get the absolute path to a given file name in the table field"""
@@ -63,6 +61,20 @@ class ToolDataManager:
raise exceptions.ObjectNotFound("No such path in data table field.")
return full_path.absolute()
def delete(self, name: str, values: Optional[str] = None) -> ToolDataDetails:
"""Removes an item from a data table"""
data_table = self._data_table(name)
if not values:
raise exceptions.RequestParameterInvalidException(f"Invalid data table item ( {values} ) specified.")
split_values = values.split("\t")
if len(split_values) != len(data_table.get_column_name_list()):
raise exceptions.RequestParameterInvalidException(f"Invalid data table item ( {values} ) specified. Wrong number of columns ({len(split_values)} given, {len(data_table.get_column_name_list())} required).")
data_table.remove_entry(split_values)
return self._reload_data_table(name)
def _data_table(self, name: str) -> TabularToolDataTable:
try:
return self.data_tables[name]
@@ -74,3 +86,11 @@ class ToolDataManager:
if out is None:
raise exceptions.ObjectNotFound(f"No such field {field_name} in data table {table_name}.")
return out
def _reload_data_table(self, name: str) -> ToolDataDetails:
self._app.queue_worker.send_control_task(
'reload_tool_data_tables',
noop_self=True,
kwargs={'table_name': name}
)
return self.show(name)