From a85541d9f7622813ec98bf042164414edc1fb366 Mon Sep 17 00:00:00 2001 From: yvesf Date: Sat, 25 Jun 2011 17:14:05 +0200 Subject: web -> bottle --- ebus/web/__init__.py | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) (limited to 'ebus/web/__init__.py') diff --git a/ebus/web/__init__.py b/ebus/web/__init__.py index e69de29..cfec3f0 100644 --- a/ebus/web/__init__.py +++ b/ebus/web/__init__.py @@ -0,0 +1,67 @@ +# coding: utf-8 +import os +import time +import datetime +import calendar + +import bottle +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +from ebus.sql import model + +app = bottle.Bottle("ebus") +bottle.debug() + +engine = create_engine("postgresql://jack:jack@10.2.2.22:5432/ebus",echo=True) +Session = sessionmaker() +Session.configure(bind=engine) + +@app.route("/") +def do_index(): + return serve_static("index.html") + +@app.route('/static/:filename') +def serve_static(filename): + return bottle.static_file(filename, + root=os.path.join(os.path.dirname(__file__),"static")) + +@app.route("/list") +def list(): + sensors = Session().query(model.Sensor).all() + return {"type":"list","data":map(lambda sensor: sensor.name, sensors)} + +@app.route("/:when#today|yesterday|week|month#/:sensor") +def get_value(when,sensor): + s = Session() + sensor = s.query(model.Sensor).filter(model.Sensor.name == sensor).first() + values = Session().query(model.Value).add_columns("value_float","value_string","value_int") + values = values.filter(model.Value.sensor == sensor) + + now = datetime.datetime.now() + f,t = None, None + if when == "today": + f = now.date() + t = now.date() + datetime.timedelta(1) + elif when == "yesterday": + f = now.date() - datetime.timedelta(1) + t = now + elif when == "week": + f = now.date() - datetime.timedelta(now.isoweekday()) + t = now.date() + datetime.timedelta(7-now.isoweekday()) + elif when == "month": + f = now.date() - datetime.timedelta(now.day) + t = f + datetime.timedelta( calendar.monthrange(f.year, f.month)[1] ) + else: + raise Exception("illegal timerange") + + values = values.filter(model.Value.timestamp.between(f,t)) + x = values.all() + + v=[] + for value in values.all(): + v.append(value.value()) + return {"type":when,"data":v} + + + -- cgit v1.2.1