Beispiel #1
0
def merge(id, other_id):
    _, entity = get_entity(id, request.authz.WRITE)
    _, other = get_entity(other_id, request.authz.WRITE)

    try:
        entity.merge(other)
    except ValueError as ve:
        raise BadRequest(ve.message)

    db.session.commit()
    log_event(request, entity_id=entity.id)
    update_entity(entity)
    update_entity(other)
    return view(entity.id)
Beispiel #2
0
def documents(id):
    enable_cache()
    entity, _ = get_entity(id, request.authz.READ)
    result = EntityDocumentsQuery.handle_request(request,
                                                 entity=entity,
                                                 schema=DocumentSchema)
    return jsonify(result)
Beispiel #3
0
def similar(id):
    enable_cache()
    entity, _ = get_entity(id, request.authz.READ)
    result = SimilarEntitiesQuery.handle_request(request,
                                                 entity=entity,
                                                 schema=EntitySchema)
    return jsonify(result)
Beispiel #4
0
def links(id):
    enable_cache()
    entity, obj = get_entity(id, request.authz.READ)
    result = LinksQuery.handle_request(request,
                                       entity=entity,
                                       schema=LinkSchema)
    return jsonify(result)
Beispiel #5
0
def update(collection_id):
    collection = obj_or_404(Collection.by_id(collection_id))
    request.authz.require(request.authz.collection_write(collection))
    data = request_data()
    entity, obj = get_entity(data.get('entity_id'), request.authz.WRITE)
    if obj.collection_id != collection_id:
        raise BadRequest("Entity does not belong to collection.")

    match, _ = get_entity(data.get('match_id'), request.authz.READ)
    judgement = data.get('judgement')
    if judgement not in EntityIdentity.JUDGEMENTS:
        raise BadRequest("Invalid judgement.")
    update_lead(entity, match, judgement, judge=request.authz.role)
    log_event(request)
    update_entity(obj)
    return jsonify({'status': 'ok'})
Beispiel #6
0
def similar(id):
    entity, _ = get_entity(id, request.authz.READ)
    schema = schemata.get(entity.get('schema'))
    if not schema.fuzzy:
        return jsonify({'status': 'ignore', 'results': [], 'total': 0})
    state = QueryState(request.args, request.authz)
    combined = combined_entity(entity)
    return jsonify(similar_entities(combined, state))
Beispiel #7
0
def update(id):
    _, entity = get_entity(id, request.authz.WRITE)
    data = parse_request(schema=EntitySchema)
    if arg_bool('merge'):
        data['data'] = merge_data(data.get('data') or {}, entity.data or {})
    entity.update(data)
    db.session.commit()
    update_entity(entity)
    update_collection(entity.collection)
    return view(entity.id)
Beispiel #8
0
def update(id):
    _, entity = get_entity(id, request.authz.WRITE)

    try:
        entity = Entity.save(request_data(),
                             entity.collection,
                             merge=arg_bool('merge'))
    except (ValueError, TypeError) as ve:
        raise BadRequest(ve.message)

    entity.collection.touch()
    db.session.commit()
    log_event(request, entity_id=entity.id)
    update_entity(entity)
    return view(entity.id)
Beispiel #9
0
def documents(id):
    entity, _ = get_entity(id, request.authz.READ)
    state = QueryState(request.args, request.authz)
    combined = combined_entity(entity)
    return jsonify(entity_documents(combined, state))
Beispiel #10
0
def links(id):
    entity, obj = get_entity(id, request.authz.READ)
    state = QueryState(request.args, request.authz)
    return jsonify(links_query(entity, state))
Beispiel #11
0
def view(id):
    entity, obj = get_entity(id, request.authz.READ)
    log_event(request, entity_id=id)
    return jsonify(entity)
Beispiel #12
0
def delete(id):
    _, entity = get_entity(id, request.authz.WRITE)
    delete_entity(entity)
    db.session.commit()
    log_event(request, entity_id=entity.id)
    return jsonify({'status': 'ok'})
Beispiel #13
0
def view(id):
    entity, obj = get_entity(id, request.authz.READ)
    return jsonify(entity, schema=EntitySchema)
Beispiel #14
0
def delete(id):
    _, entity = get_entity(id, request.authz.WRITE)
    delete_entity(entity)
    update_collection(entity.collection)
    db.session.commit()
    return jsonify({'status': 'ok'}, status=410)