Source code for bioblend.galaxy.roles

"""
Contains possible interactions with the Galaxy Roles
"""

from typing import (
    Any,
    Dict,
    List,
    Optional,
    TYPE_CHECKING,
)

from bioblend.galaxy.client import Client

if TYPE_CHECKING:
    from bioblend.galaxy import GalaxyInstance


[docs] class RolesClient(Client): module = "roles" def __init__(self, galaxy_instance: "GalaxyInstance") -> None: super().__init__(galaxy_instance)
[docs] def get_roles(self) -> List[Dict[str, Any]]: """ Displays a collection (list) of roles. :rtype: list :return: A list of dicts with details on individual roles. For example:: [{"id": "f2db41e1fa331b3e", "model_class": "Role", "name": "Foo", "url": "/api/roles/f2db41e1fa331b3e"}, {"id": "f597429621d6eb2b", "model_class": "Role", "name": "Bar", "url": "/api/roles/f597429621d6eb2b"}] """ return self._get()
[docs] def show_role(self, role_id: str) -> Dict[str, Any]: """ Display information on a single role :type role_id: str :param role_id: Encoded role ID :rtype: dict :return: Details of the given role. For example:: {"description": "Private Role for Foo", "id": "f2db41e1fa331b3e", "model_class": "Role", "name": "Foo", "type": "private", "url": "/api/roles/f2db41e1fa331b3e"} """ return self._get(id=role_id)
[docs] def create_role( self, role_name: str, description: str, user_ids: Optional[List[str]] = None, group_ids: Optional[List[str]] = None, ) -> Dict[str, Any]: """ Create a new role. :type role_name: str :param role_name: A name for the new role :type description: str :param description: Description for the new role :type user_ids: list :param user_ids: A list of encoded user IDs to add to the new role :type group_ids: list :param group_ids: A list of encoded group IDs to add to the new role :rtype: dict :return: Details of the newly created role. For example:: {'description': 'desc', 'url': '/api/roles/ebfb8f50c6abde6d', 'model_class': 'Role', 'type': 'admin', 'id': 'ebfb8f50c6abde6d', 'name': 'Foo'} .. versionchanged:: 0.15.0 Changed the return value from a 1-element list to a dict. """ if user_ids is None: user_ids = [] if group_ids is None: group_ids = [] payload = {"name": role_name, "description": description, "user_ids": user_ids, "group_ids": group_ids} ret = self._post(payload) if isinstance(ret, list): # Galaxy release_20.09 and earlier returned a 1-element list ret = ret[0] return ret