From 5c3cbdaeae405014f397a7a898e0d09e3575f815 Mon Sep 17 00:00:00 2001 From: Adam Kariv Date: Thu, 18 Apr 2024 13:20:22 +0300 Subject: [PATCH] Add simple cards endpoint --- server.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/server.py b/server.py index cbe4ebe..f394c95 100644 --- a/server.py +++ b/server.py @@ -1,7 +1,7 @@ import os import json -from flask import Flask +from flask import Flask, current_app, request from flask_cors import CORS import elasticsearch @@ -299,6 +299,34 @@ def process_extra(self, return_value, response): app.register_blueprint(blueprint, url_prefix='/api/idx/') +# Simple API, with four parameters: q, response, situation and bounds +@app.route('/api/simple/cards') +def simple_cards(): + q = request.args.get('q', '') + responses = request.args.get('response', '') + situations = request.args.get('situation', '') + bounds = request.args.get('bounds', '') + filters = {} + if responses: + filters['response_ids_parents']= responses + if situations: + filters['situation_ids']= situations + if bounds: + filters['branch_geometry__bounded'] = json.loads(bounds) + filters = json.dumps([filters]) + + es_client = current_app.config['ES_CLIENT'] + return blueprint.controllers.search( + es_client, ['cards'], q, + size=30, + offset=0, + filters=filters, + score_threshold=0, + match_type='cross_fields', + match_operator='or', + ).get('search_results', []) + + @app.after_request def add_header(response): response.cache_control.max_age = 600