Skip to content
Snippets Groups Projects
app.py 1.58 KiB
from flask import Flask
from flask import request
from flask import render_template
import json
import os

from ipmd_weatherdata import WeatherData, weatherdata_utils

app = Flask(__name__)

SITE_ROOT = os.path.dirname(os.path.realpath(__file__))

@app.route("/")
def index():
    return render_template("usage.html")

@app.route("/weather_data")
def get_weather_data():
    longitude = request.args.get("longitude", None) # WGS84
    latitude = request.args.get("latitude", None) # WGS84
    parameters = request.args.get("parameters", None) # Comma separated list
    try:
        parameters = None if parameters == None else [int(i) for i in parameters.split(",")]
    except ValueError as e:
        return "BAD REQUEST: Error in specified weather parameters: %s" % e, 403
    interval = int(request.args.get("interval", 3600))
    time_start = request.args.get("timeStart", "2021-01-01")
    time_end = request.args.get("timeEnd", "2021-12-31")
    # Input check
    if longitude is None or latitude is None:
        return "BAD REQUEST: longitude (%s) and/or latitude (%s) is not set" % (longitude, latitude), 403
    wd_file = open(SITE_ROOT + "/data_files/2021_apelsvoll_redigert.json")
    weather_data = WeatherData(**json.load(wd_file))
    wd_file.close()

    # FILTER THE DATA
    # Period first
    weather_data = weatherdata_utils.filter_period(weather_data,time_start,time_end)
    # Parameters next
    if parameters is not None:
        weather_data = weatherdata_utils.filter_params(weather_data, parameters)
    # Aggregation?

    return weather_data.as_dict()
    #return "<p>Hello, World!</p>"