def get_members(self, offset=None, limit=None): """ Retrieves project members. :param offset: Pagination offset. :param limit: Pagination limit. :return: Collection object. """ extra = {'resource': self.__class__.__name__, 'query': {'id': self.id}} logger.info('Get members', extra=extra) response = self._api.get( url=self._URL['members_query'].format(id=self.id), params={ 'offset': offset, 'limit': limit }) data = response.json() total = response.headers['x-total-matching-query'] members = [Member(api=self._api, **member) for member in data['items']] links = [Link(**link) for link in data['links']] href = data['href'] return Collection(resource=Member, href=href, total=total, items=members, links=links, api=self._api)
def add_member_division(self, division, permissions): """ Add a member (team) to a volume. :param division: Division object or division identifier. :param permissions: Permissions dictionary. :return: Member object. """ division = Transform.to_division(division) if 'execute' in permissions: permissions.pop('execute') data = {'username': division, 'type': 'DIVISION'} if isinstance(permissions, dict): data.update({'permissions': permissions}) extra = { 'resource': type(self).__name__, 'query': { 'id': self.id, 'data': data, } } logger.info('Adding volume division member', extra=extra) response = self._api.post( url=self._URL['members_query'].format(id=self.id), data=data) member_data = response.json() return Member(api=self._api, **member_data)
def add_member_team(self, team, permissions): """ Add a member (team) to a volume. :param team: Team object or team identifier. :param permissions: Permissions dictionary. :return: Member object. """ team = Transform.to_team(team) data = {'id': team, 'type': 'TEAM'} if 'execute' in permissions: permissions.pop('execute') if isinstance(permissions, dict): data.update({'permissions': permissions}) extra = { 'resource': self.__class__.__name__, 'query': { 'id': self.id, 'data': data, } } logger.info('Adding volume team member using team id', extra=extra) response = self._api.post( url=self._URL['members_query'].format(id=self.id), data=data) member_data = response.json() return Member(api=self._api, **member_data)
def add_member(self, user, permissions): """ Add a member to the volume. :param user: Member username :param permissions: Permissions dictionary. :return: Member object. """ user = Transform.to_user(user) data = {'username': user, 'type': 'USER'} if 'execute' in permissions: permissions.pop('execute') if isinstance(permissions, dict): data.update({'permissions': permissions}) extra = { 'resource': type(self).__name__, 'query': { 'id': self.id, 'data': data, } } logger.info('Adding volume member', extra=extra) response = self._api.post( url=self._URL['members_query'].format(id=self.id), data=data) member_data = response.json() return Member(api=self._api, **member_data)
def add_member_email(self, email, permissions=None): """ Add a member to the project using member email. :param email: Member email. :param permissions: Permissions dictionary. :return: Member object. """ data = {'email': email} if isinstance(permissions, dict): data.update({ 'permissions': permissions }) extra = { 'resource': self.__class__.__name__, 'query': { 'id': self.id, 'data': data, } } logger.info('Adding member using email', extra=extra) response = self._api.post( url=self._URL['members_query'].format(id=self.id), data=data) member_data = response.json() return Member(api=self._api, **member_data)
def get_member(self, username, api=None): """Retrieve dataset member :param username: Member name :param api: Api instance :return: Member object """ api = api if api else self._API response = api.get(url=self._URL['member'].format(id=self.id, username=username), ) data = response.json() return Member(api=api, **data)
def get_member(self, username, api=None): """ Fetches information about a single volume member :param username: Member name :param api: Api instance :return: Member object """ api = api if api else self._API response = api.get(url=self._URL['member'].format(id=self.id, username=username), ) data = response.json() return Member(api=api, **data)
def add_member(self, username, permissions, api=None): """Add member to a dataset :param username: Member username :param permissions: Permissions dict :param api: Api instance :return: New member instance """ api = api or self._API data = {'username': username, 'permissions': permissions} response = api.post(url=self._URL['members'].format(id=self.id), data=data) data = response.json() return Member(api=api, **data)
def add_member(self, user, permissions): """ Add a member to the project. :param user: Member username :param permissions: Permissions dictionary. :return: Member object. """ user = Transform.to_user(user) data = {} if isinstance(permissions, dict): data = {'username': user, 'permissions': permissions} response = self._api.post( url=self._URL['members_query'].format(id=self.id), data=data) member_data = response.json() return Member(api=self._api, **member_data)
def get_members(self, api=None): """Retrieve dataset members :param api: Api instance :return: Collection object """ api = api or self._API response = api.get(url=self._URL['members'].format(id=self.id)) data = response.json() total = response.headers['x-total-matching-query'] members = [Member(api=api, **member) for member in data['items']] links = [Link(**link) for link in data['links']] href = data['href'] return Collection(resource=Member, href=href, total=total, items=members, links=links, api=api)