Example #1
0
 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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #7
0
    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)
Example #9
0
 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)