Beispiel #1
0
def generate_matches(collection_id, other_id):
    collection = get_collection(collection_id, request.authz.WRITE)
    other = get_collection(other_id, request.authz.WRITE)
    process_xref.apply_async([collection.id, other.id],
                             queue=USER_QUEUE,
                             routing_key=USER_ROUTING_KEY)
    return jsonify({'status': 'accepted'}, status=202)
Beispiel #2
0
def permissions_index(id):
    collection = get_collection(id, request.authz.WRITE)
    q = Permission.all()
    q = q.filter(Permission.collection_id == collection.id)
    permissions = []
    roles = [r for r in Role.all_groups() if check_visible(r)]
    for permission in q.all():
        if not check_visible(permission.role):
            continue
        permissions.append(permission)
        if permission.role in roles:
            roles.remove(permission.role)

    # this workaround ensures that all groups are visible for the user to
    # select in the UI even if they are not currently associated with the
    # collection.
    for role in roles:
        permissions.append({
            'collection_id': collection.id,
            'write': False,
            'read': False,
            'role': role
        })

    return jsonify({
        'total': len(permissions),
        'results': PermissionSchema().dump(permissions, many=True)
    })
Beispiel #3
0
def update(id):
    collection = get_collection(id, request.authz.WRITE)
    data = parse_request(schema=CollectionSchema)
    collection.update(data)
    db.session.commit()
    update_collection(collection)
    return view(id)
Beispiel #4
0
def create():
    data = parse_request(schema=EntitySchema)
    collection = get_collection(data.get('collection_id'), request.authz.WRITE)
    entity = Entity.create(data, collection)
    db.session.commit()
    update_entity(entity)
    update_collection(collection)
    return view(entity.id)
Beispiel #5
0
def permissions_update(id):
    # TODO: consider using a list to bundle permission writes
    collection = get_collection(id, request.authz.WRITE)
    data = parse_request(schema=PermissionSchema)
    role = Role.all().filter(Role.id == data['role']['id']).first()
    if role is None or not check_visible(role):
        raise BadRequest()

    perm = update_permission(role, collection, data['read'], data['write'])
    return jsonify({'status': 'ok', 'updated': PermissionSchema().dump(perm)})
Beispiel #6
0
def delete(id):
    collection = get_collection(id, request.authz.WRITE)
    delete_collection.apply_async([collection.id],
                                  queue=USER_QUEUE,
                                  routing_key=USER_ROUTING_KEY)
    return jsonify({'status': 'accepted'}, status=202)
Beispiel #7
0
def view(id):
    collection = get_collection(id)
    data, _ = CollectionSchema().dump(collection)
    data.update(get_collection_stats(collection.id))
    return jsonify(data)