Пример #1
0
    def add_collaborator(self, username):
        logger.info('Adding collaborator "{}" to project "{}"'.format(username, self.uuid))

        # Set permissions on the metadata record
        pem = BaseMetadataPermissionResource(self.uuid, self._agave)
        pem.username = username
        pem.read = True
        pem.write = True
        pem.save()

        # Set roles on project system
        self.project_system.add_role(username, system_roles.USER)
Пример #2
0
    def remove_collaborator(self, username):
        logger.info('Removing collaborator "{}" from project "{}"'.format(username, self.uuid))

        # Set permissions on the metadata record
        pem = BaseMetadataPermissionResource(self.uuid, self._agave)
        pem.username = username
        pem.read = False
        pem.write = False
        pem.save()

        # Set roles on project system
        self.project_system.remove_role(username)
Пример #3
0
    def _update_pems_with_system_roles(self, system_roles, meta_pems):
        """Updates this metadata object's permissions with those of a system's roles

            :param list system_roles: A list of :class:`dict` representing the user roles of a system.
             This should be the response from :func:`~agavepy.agave.Agave.systems.listRoles`.
            :param list meta_pems: A list of
             :class:`~designsafe.apps.api.agave.models.metadata.BaseMetadataPermissionResource`.
             This should be the response from
             :func:`~designsafe.apps.api.agave.models.metadata.BaseMetadataPermissionResource.list_permissions`

            :returns: A :class:`dict` where the keys are the usernames who do not have a role set on the system and the value
             of each key is the :class:`~designsafe.apps.api.agave.models.metadata.BaseMetadataPermissionResource` object.
            :rtype: dict
        """
        meta_pems_users = {pem.username: pem for pem in meta_pems}
        for role_obj in system_roles:
            username = role_obj['username']
            role = role_obj['role']
            try:
                pem = meta_pems_users.pop(username)
            except KeyError:
                pem = BaseMetadataPermissionResource(self.uuid, self._agave)
                pem.username = username

            if role == system_roles_list.GUEST and \
                (not pem.read or pem.write):
                pem.read = True
                pem.save()
                logger.debug('Created or Updated %s', pem)
            elif role == system_roles_list.USER and \
                (not pem.read or pem.write):
                pem.read = True
                pem.write = True
                pem.save()
                logger.debug('Created or Updated %s', pem)

        return meta_pems_users