mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Add delete method to manager
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user