From a592d5845d92c902303a1b57b519698ec0f02e17 Mon Sep 17 00:00:00 2001 From: Emmanuel Robert Ssebaggala Date: Thu, 16 May 2019 15:56:06 +0300 Subject: [PATCH] Get graph data (#10) Graph data does not need pagination so a different end point is provided for this --- btsapi/modules/reports/controllers.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/btsapi/modules/reports/controllers.py b/btsapi/modules/reports/controllers.py index c75a2cf..c287715 100644 --- a/btsapi/modules/reports/controllers.py +++ b/btsapi/modules/reports/controllers.py @@ -260,7 +260,8 @@ def create_or_update_report(): report = Report(name=content['name'], category_pk=content['category_id'], query=content['qry'], - notes=content['notes']) + notes=content['notes'], + options=content['options']) db.session.add(report) db.session.commit() @@ -381,4 +382,26 @@ def delete_category(id): return jsonify({}), 200 except Exception as e: db.session.rollback() - return jsonify(str(e)), 400 \ No newline at end of file + return jsonify(str(e)), 400 + + +@mod_reports.route('/graphdata/', methods=['GET']) +@login_required +def get_graph_data(report_id): + """ + Get graph data for report of type Graph + + :param report_id: + :return: + """ + report = db.session.query(Report).filter_by(pk=report_id).first() + + #@TODO: Add check for report type + + table_columns = db.engine.execute(text(report.query)).keys() + result = db.engine.execute(text(report.query)) + + data_results = [{k: v for k, v in zip( + table_columns, row)} for row in result.fetchall()] + + return jsonify(data_results)