예제 #1
0
def resource_acl_create(context, data_dict):
    '''Append a new resource acl to the list of resource acls

    :param resource_id: the id of the resource
    :param auth_type: user, org
    :param auth_id: the id of user or organization
    :param permission: none, read
    '''
    check_access('resource_acl_create', context, data_dict)

    # print datadict and context
    data, errors = validate(data_dict, resource_acl_create_schema(), context)

    if errors:
        raise ValidationError(errors)

    acl = ResourceAcl(resource_id=data.get('resource_id'),
                      auth_type=data.get('auth_type'),
                      auth_id=data.get('auth_id'),
                      permission=data.get('permission'),
                      creator_user_id=context.get('user'))

    acl.save()

    return acl.as_dict()
예제 #2
0
def resource_acl_patch(context, data_dict):
    '''Patch the resource acl

    :param id: the id of the resource acl
    :param auth_type: user, org
    :param auth_id: the id of user or organization
    :param permission: none, read
    '''
    reference = get_or_bust(data_dict, 'id')
    acl = ResourceAcl.get(reference)

    if not acl:
        raise NotFound('acl <{id}> was not found.'.format(id=reference))

    data_dict['resource_id'] = acl.resource_id

    check_access('resource_acl_patch', context, data_dict)

    data, errors = validate(data_dict, resource_acl_patch_schema(), context)

    if errors:
        raise ValidationError(errors)

    acl.auth_type = data.get('auth_type', acl.auth_type)
    acl.auth_id = data.get('auth_id', acl.auth_id)
    acl.permission = data.get('permission', acl.permission)
    acl.last_modified = datetime.datetime.utcnow()
    acl.modifier_user_id = context.get('user')

    acl.commit()

    return acl.as_dict()
예제 #3
0
def resource_acl_show(context, data_dict):
    '''Return the information of the resource acl

    :param id: the id of the resource acl
    '''
    reference = get_or_bust(data_dict, 'id')
    acl = ResourceAcl.get(reference)

    if not acl:
        raise NotFound('acl <{id}> was not found.'.format(id=reference))

    data_dict['resource_id'] = acl.resource_id
    check_access('resource_acl_show', context, data_dict)

    return acl.as_dict()
예제 #4
0
def resource_acl_delete(context, data_dict):
    '''Delete the resource acl from the list of resource acls

    :param id: the id of the resource acl
    '''
    reference = get_or_bust(data_dict, 'id')
    acl = ResourceAcl.get(reference)

    if not acl:
        raise NotFound('acl <{id}> was not found.'.format(id=reference))

    data_dict['resource_id'] = acl.resource_id

    check_access('resource_acl_delete', context, data_dict)

    acl.delete()
    acl.commit()