From f884244feef20d1216cbbbaf123d15d9732758cb Mon Sep 17 00:00:00 2001 From: Philipp Spitzer Date: Mon, 11 Jun 2018 23:57:16 +0200 Subject: [PATCH] Add begin and end parameters to sensor endpoint. --- web/seepark_web.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/web/seepark_web.py b/web/seepark_web.py index 76a5b15..596d482 100644 --- a/web/seepark_web.py +++ b/web/seepark_web.py @@ -3,7 +3,7 @@ import datetime import time import configparser import os -from flask import Flask, render_template, jsonify +from flask import Flask, render_template, jsonify, request import flask.json from sqlalchemy import create_engine @@ -15,6 +15,10 @@ class JSONEncoder(flask.json.JSONEncoder): return super().default(object) +def parse_datetime(date_str): + return datetime.datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%S') + + app = Flask(__name__) app.json_encoder = JSONEncoder config = configparser.ConfigParser() @@ -43,10 +47,24 @@ def sensors(version): @app.route('/api//sensor/') def sensor(version, sensor_id): - """Return all sensor data""" + """Return all sensor data + + URL parameters: + begin=, optional, format like "2018-05-19T21:07:53" + end=, optional, format like "2018-05-19T21:07:53" + """ engine = open_engine(config) with engine.connect() as conn: - cursor = conn.execute('select * from sensors where sensor_id=%s order by id', sensor_id) + where = ['sensor_id=%s'] + sql_args = [sensor_id] + if 'begin' in request.args: + where.append('timestamp>=%s') + sql_args.append(request.args.get('begin', None, parse_datetime)) + if 'end' in request.args: + where.append('timestamp<=%s') + sql_args.append(request.args.get('end', None, parse_datetime)) + sql = 'select * from sensors where {} order by id'.format(' and '.join(where)) + cursor = conn.execute(sql, *sql_args) result = [dict(row) for row in cursor] return jsonify(result) -- 2.47.3