diff options
Diffstat (limited to 'app.py')
-rw-r--r-- | app.py | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -0,0 +1,45 @@ | |||
1 | #!/usr/bin/env python3 | ||
2 | import json, requests, datetime, argparse, pytz, flask | ||
3 | import library, forms | ||
4 | |||
5 | app = flask.Flask(__name__) | ||
6 | app.config['SECRET_KEY'] = "hunter2" | ||
7 | |||
8 | @app.route('/', methods=('GET','POST')) | ||
9 | def index(): | ||
10 | form = forms.WeatherForm() | ||
11 | if form.validate_on_submit(): | ||
12 | location = form.location.data | ||
13 | days = form.days.data | ||
14 | forecast_type = form.forecast_type.data | ||
15 | print(location) | ||
16 | print(days) | ||
17 | print(forecast_type) | ||
18 | if forecast_type == 'hourly': | ||
19 | return flask.redirect(flask.url_for('hourly', location=location, days=days)) | ||
20 | elif forecast_type == 'daily': | ||
21 | return flask.redirect(flask.url_for('daily', location=location, days=days)) | ||
22 | |||
23 | return flask.render_template("index.html", form=form) | ||
24 | |||
25 | @app.route('/hourly') | ||
26 | def hourly(): | ||
27 | location = flask.request.args.get('location', type=str) | ||
28 | days = flask.request.args.get('days', type=int) | ||
29 | latitude, longitude = library.get_lat_long(location) | ||
30 | grid_data = library.get_grid_data(latitude, longitude) | ||
31 | raw_data = library.get_raw_data(grid_data["grid_id"], grid_data["grid_x"], grid_data["grid_y"]) | ||
32 | data = library.hourly_forecast(raw_data, days) | ||
33 | return flask.render_template("hourly.html", data=data) | ||
34 | |||
35 | |||
36 | @app.route('/daily') | ||
37 | def daily(): | ||
38 | location = flask.request.args.get('location', type=str) | ||
39 | days = flask.request.args.get('days', type=int) | ||
40 | latitude, longitude = library.get_lat_long(location) | ||
41 | grid_data = library.get_grid_data(latitude, longitude) | ||
42 | raw_data = library.get_raw_data(grid_data["grid_id"], grid_data["grid_x"], grid_data["grid_y"]) | ||
43 | raw_forecast = library.get_raw_forecast(grid_data["grid_id"], grid_data["grid_x"], grid_data["grid_y"]) | ||
44 | data = library.daily_forecast(raw_data, raw_forecast, days) | ||
45 | return flask.render_template("daily.html", data=data) | ||