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)
def documents(id): enable_cache() entity, _ = get_entity(id, request.authz.READ) result = EntityDocumentsQuery.handle_request(request, entity=entity, schema=DocumentSchema) return jsonify(result)
def similar(id): enable_cache() entity, _ = get_entity(id, request.authz.READ) result = SimilarEntitiesQuery.handle_request(request, entity=entity, schema=EntitySchema) return jsonify(result)
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)
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'})
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))
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)
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)
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))
def links(id): entity, obj = get_entity(id, request.authz.READ) state = QueryState(request.args, request.authz) return jsonify(links_query(entity, state))
def view(id): entity, obj = get_entity(id, request.authz.READ) log_event(request, entity_id=id) return jsonify(entity)
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'})
def view(id): entity, obj = get_entity(id, request.authz.READ) return jsonify(entity, schema=EntitySchema)
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)