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.tags

"""
API Controller providing Galaxy Tags
"""
import logging

from galaxy.exceptions import MessageException
from galaxy.web import expose_api
from galaxy.webapps.base.controller import BaseAPIController, UsesTagsMixin

log = logging.getLogger(__name__)


[docs]class TagsController(BaseAPIController, UsesTagsMixin): # Retag an item. All previous tags are deleted and new tags are applied.
[docs] @expose_api def update(self, trans, payload, **kwd): """ PUT /api/tags/ Apply a new set of tags to an item; previous tags are deleted. """ item_id = payload.get("item_id") item_class = payload.get("item_class") item_tags = payload.get("item_tags") if item_id is None: raise MessageException("Please provide the item id (item_id).") if item_class is None: raise MessageException("Please provide the item class (item_class).") if item_tags and len(item_tags) > 0: item_tags = ",".join(item_tags) item = self._get_item(trans, item_class, trans.security.decode_id(item_id)) user = trans.user self.get_tag_handler(trans).delete_item_tags(user, item) self.get_tag_handler(trans).apply_item_tags(user, item, item_tags) trans.sa_session.flush()
def _get_item(self, trans, item_class_name, id): """ Get an item based on type and id. """ item_class = self.get_tag_handler(trans).item_tag_assoc_info[item_class_name].item_class item = trans.sa_session.query(item_class).filter(item_class.id == id).first() return item