Source code for sisense.admin.group

from sisense.resource import Resource
from .user import User


[docs]class Group(Resource):
[docs] def get(self, name: str = None, oid: str = None) -> Resource: """Get group by name. At least one parameter should be set. :param name: (str, default None) Group's name. :param oid: (str, default None) Group's ID. :return: Group, if found. None, otherwise. """ if oid: content = self._api.get(f'groups/{oid}') elif name: content = self._api.get('groups', query={'name': name}) content = content[0] if len(content) else None else: raise ValueError('At least one parameter should be set.') return Group(self._api, content) if content else None
[docs] def all(self, **kwargs) -> list: """ Get all groups. :param kwargs: Positional optional arguments used to filter users: - name: (str) Group's name. - mail: (str) Group's email. - roleId: (str) Role ID. - origin: ('ad', 'sisense') User's origin. - ids: (list) Groups' IDs. - fields: (list) Which fields to return. - sort: (str) Field in which the results should be sorted. - skip: (int) Number of results to skip from start. - limit: (int) Number of results returned. - expand: (list) Fields that should be expanded (substitutes their IDs with actual objects). :return: (list) of Group objects. """ content = self._api.get('groups', query=kwargs) content = [Group(self._api, rjson) for rjson in content] return content
[docs] def create(self, name: str) -> Resource: """ Create a new group. :param name: (str) Group's name. :return: (Group) Newly created group. """ data = {'name': name} content = self._api.post('groups', data=data) return Group(self._api, content)
[docs] def delete(self): """Delete the current group.""" self._api.delete(f'groups/{self._id}')
[docs] def add_user(self, user: User): """ Add a user to the current group. If user is already in the group, do nothing. :param user: (User) User to be added. """ groups = user.groups if hasattr(user, 'groups') else [] if self._id not in groups: groups.append(self._id) user.update(groups=groups)
[docs] def remove_user(self, user: User): """ Remove a user from the current group. If user isn't in the group, do nothing. :param user: (User) User to be removed. """ groups = user.groups if hasattr(user, 'groups') else [] if self._id in groups: groups = list(set(groups) - {self._id}) user.update(groups=groups)