Source code for galaxy.webapps.galaxy.api.item_tags
"""
API operations related to tagging items.
"""
from galaxy.web.base.controller import BaseAPIController
from galaxy.web.base.controller import UsesTagsMixin
from galaxy.web import _future_expose_api as expose_api
from galaxy import exceptions
import logging
log = logging.getLogger( __name__ )
[docs]class BaseItemTagsController( BaseAPIController, UsesTagsMixin ):
"""
"""
@expose_api
[docs] 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 ]
@expose_api
[docs] 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 )
@expose_api
[docs] 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
@expose_api
[docs] 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