Type and bug fixes for api/extended_metadata.py.

This commit is contained in:
John Chilton
2021-10-14 00:51:59 -04:00
parent 14fb067c4e
commit 8412cb53b0
2 changed files with 16 additions and 25 deletions
@@ -2,13 +2,14 @@
API operations on annotations.
"""
import logging
from typing import Generic, Optional, TypeVar
from galaxy import (
managers,
web
model,
web,
)
from galaxy.webapps.base.controller import (
HTTPNotImplemented,
UsesExtendedMetadataMixin,
UsesLibraryMixinItems,
UsesStoredWorkflowMixin
@@ -17,10 +18,16 @@ from . import BaseGalaxyAPIController, depends
log = logging.getLogger(__name__)
T = TypeVar('T')
class BaseExtendedMetadataController(BaseGalaxyAPIController, UsesExtendedMetadataMixin, UsesLibraryMixinItems, UsesStoredWorkflowMixin):
@web.legacy_expose_api
class BaseExtendedMetadataController(BaseGalaxyAPIController, UsesExtendedMetadataMixin, UsesLibraryMixinItems, UsesStoredWorkflowMixin, Generic[T]):
exmeta_item_id: str
def _get_item_from_id(self, trans, idstr, check_writable=True) -> Optional[T]:
...
@web.expose_api
def index(self, trans, **kwd):
idnum = kwd[self.exmeta_item_id]
item = self._get_item_from_id(trans, idnum, check_writable=False)
@@ -29,7 +36,7 @@ class BaseExtendedMetadataController(BaseGalaxyAPIController, UsesExtendedMetada
if ex_meta is not None:
return ex_meta.data
@web.legacy_expose_api
@web.expose_api
def create(self, trans, payload, **kwd):
idnum = kwd[self.exmeta_item_id]
item = self._get_item_from_id(trans, idnum, check_writable=True)
@@ -41,26 +48,12 @@ class BaseExtendedMetadataController(BaseGalaxyAPIController, UsesExtendedMetada
ex_obj = self.create_extended_metadata(trans, payload)
self.set_item_extended_metadata_obj(trans, item, ex_obj)
@web.legacy_expose_api
def delete(self, trans, **kwd):
idnum = kwd[self.tagged_item_id]
item = self._get_item_from_id(trans, idnum, check_writable=True)
if item is not None:
ex_obj = self.get_item_extended_metadata_obj(trans, item)
if ex_obj is not None:
self.unset_item_extended_metadata_obj(trans, item)
self.delete_extended_metadata(trans, ex_obj)
@web.legacy_expose_api
def undelete(self, trans, **kwd):
raise HTTPNotImplemented()
class LibraryDatasetExtendMetadataController(BaseExtendedMetadataController):
class LibraryDatasetExtendMetadataController(BaseExtendedMetadataController[model.LibraryDatasetDatasetAssociation]):
controller_name = "library_dataset_extended_metadata"
exmeta_item_id = "library_content_id"
def _get_item_from_id(self, trans, idstr, check_writable=True):
def _get_item_from_id(self, trans, idstr, check_writable=True) -> Optional[model.LibraryDatasetDatasetAssociation]:
if check_writable:
item = self.get_library_dataset_dataset_association(trans, idstr)
if trans.app.security_agent.can_modify_library_item(trans.get_current_user_roles(), item):
@@ -72,12 +65,12 @@ class LibraryDatasetExtendMetadataController(BaseExtendedMetadataController):
return None
class HistoryDatasetExtendMetadataController(BaseExtendedMetadataController):
class HistoryDatasetExtendMetadataController(BaseExtendedMetadataController[model.HistoryDatasetAssociation]):
controller_name = "history_dataset_extended_metadata"
exmeta_item_id = "history_content_id"
hda_manager: managers.hdas.HDAManager = depends(managers.hdas.HDAManager)
def _get_item_from_id(self, trans, idstr, check_writable=True):
def _get_item_from_id(self, trans, idstr, check_writable=True) -> Optional[model.HistoryDatasetAssociation]:
decoded_idstr = self.decode_id(idstr)
if check_writable:
return self.hda_manager.get_owned(decoded_idstr, trans.user, current_history=trans.history)
-2
View File
@@ -751,8 +751,6 @@ check_untyped_defs = False
check_untyped_defs = False
[mypy-galaxy.webapps.galaxy.api.genomes]
check_untyped_defs = False
[mypy-galaxy.webapps.galaxy.api.extended_metadata]
check_untyped_defs = False
[mypy-galaxy.webapps.galaxy.api.datasets]
check_untyped_defs = False
[mypy-galaxy.webapps.galaxy.api.authenticate]