def load_next(root): authz.require(authz.system_edit()) q = Context.by_root(root) q = q.filter(Context.enrich_status == PENDING) q = q.order_by(Context.enrich_score.desc()) context = q.first() if context is None: # TODO: spider status system return jsonify({"status": "wait"}) return jsonify({"status": "next", "next": context.id})
def store(root): authz.require(authz.system_edit()) ctx_data = request_data() q = Context.by_root(root) q = q.filter(Context.id == ctx_data.get("id")) context = q.first() if context is None: return jsonify({"status": "failed"}, status=400) context.update(request_data()) context.active = context.enrich_status == ACCEPTED context.user = current_user db.session.commit() # TODO: task newly activated entities. return jsonify({"status": "ok"})
def view(root, id): authz.require(authz.system_edit()) q = Context.by_root(root) q = q.filter(Context.id == id) context = obj_or_404(q.first()) statements = [] entities = set() for stmt in context.statements: entities.add(stmt.subject) if qualified[stmt.attribute].data_type == "entity": entities.add(stmt._value) statements.append(stmt.to_dict(raw=True)) q = [{"assume": [context.id], "id|=": list(entities), "label": None, "type": None}] entities = {e.get("id"): e for e in execute_query(q).get("result")} return jsonify( {"status": "ok", "entities": entities, "context": context.to_dict(enrich=True), "statements": statements} )