-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
77 lines (62 loc) · 1.97 KB
/
Copy pathapp.py
File metadata and controls
77 lines (62 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import json
import re
import requests
from flask import Flask, redirect, render_template
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired
from forms import InputForm, DisplayForm
app = Flask(__name__)
app.config['SECRET_KEY'] = '5791628bb0b13ce0c676dfde280ba245'
global resp
def get_metar(icao):
global resp
code = icao.data
hdr = {"X-API-Key": "3c5ff1a1547644ffac404bdeba"}
req = requests.get("https://api.checkwx.com/metar/" + code + "/decoded", headers=hdr)
#print("Response from CheckWX.... \n")
try:
req.raise_for_status()
resp = json.loads(req.text)
print(json.dumps(resp, indent=1))
except requests.exceptions.HTTPError as e:
print(e)
return resp
def get_atis(icao):
global resp
print("In get_atis", icao)
resp = get_metar(icao)
return resp
@app.route('/', methods=('GET', 'POST'))
def submit():
global resp
form = InputForm()
if form.validate_on_submit():
resp = get_atis(form.icao)
return redirect('/success',)
return render_template('submit.html', form=form)
@app.route('/success')
def success():
global resp
form = DisplayForm()
metar = resp.get('data')
metar = metar[0]
form.icao.data = metar['icao']
form.station_name.data = metar['station']['name']
form.raw_metar.data = metar['raw_text']
form.time_zulu.data = metar['observed']
if 'wind' in metar:
form.wind_dir.data = metar['wind']['degrees']
form.wind_spd.data = metar['wind']['speed_kts']
if 'gust_kts' in metar['wind']:
form.wind_gusts.data = metar['wind']['gust_kts']
else:
form.wind_gusts.data = None
else:
form.wind_dir.data = '000'
form.wind_spd.data = '00'
form.visibility.data = metar['visibility'] ['miles']
#print(form.icao.data)
return render_template('atis.html', form=form)
if __name__ == '__main__':
app.run(debug=True)