Warning

This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.webapps.galaxy.api.item_tags

"""
API operations related to tagging items.
"""
import logging

from galaxy import exceptions
from galaxy.web import expose_api
from galaxy.web.base.controller import (
    BaseAPIController,
    UsesTagsMixin
)

log = logging.getLogger(__name__)


[docs]class BaseItemTagsController(BaseAPIController, UsesTagsMixin): """ """
[docs] @expose_api def index(self, trans, **kwd): """ """ tags = self._get_user_tags(trans, self.tagged_item_class, kwd[self.tagged_item_id]) return [self._api_value(tag, trans, view='collection') for tag in tags]
[docs] @expose_api def show(self, trans, tag_name, **kwd): """ """ tag = self._get_item_tag_assoc(trans, self.tagged_item_class, kwd[self.tagged_item_id], tag_name) if not tag: raise exceptions.ObjectNotFound("Failed to retrieve specified tag.") return self._api_value(tag, trans)
[docs] @expose_api def create(self, trans, tag_name, payload=None, **kwd): """ """ payload = payload or {} value = payload.get("value", None) tag = self._apply_item_tag(trans, self.tagged_item_class, kwd[self.tagged_item_id], tag_name, value) return self._api_value(tag, trans)
# Not handling these differently at this time update = create
[docs] @expose_api def delete(self, trans, tag_name, **kwd): """ """ deleted = self._remove_items_tag(trans, self.tagged_item_class, kwd[self.tagged_item_id], tag_name) if not deleted: raise exceptions.RequestParameterInvalidException("Failed to delete specified tag.") # TODO: ugh - 204 would be better return 'OK'
def _api_value(self, tag, trans, view='element'): return tag.to_dict(view=view, value_mapper={'id': trans.security.encode_id})
[docs]class HistoryContentTagsController(BaseItemTagsController): controller_name = "history_content_tags" tagged_item_class = "HistoryDatasetAssociation" tagged_item_id = "history_content_id"
[docs]class HistoryTagsController(BaseItemTagsController): controller_name = "history_tags" tagged_item_class = "History" tagged_item_id = "history_id"
[docs]class WorkflowTagsController(BaseItemTagsController): controller_name = "workflow_tags" tagged_item_class = "StoredWorkflow" tagged_item_id = "workflow_id"
# TODO: Visualization and Pages once APIs for those are available