Update
This commit is contained in:
parent
1d2bb73082
commit
f6a26e7a37
4 changed files with 142 additions and 135 deletions
36
app.py
36
app.py
|
|
@ -1,32 +1,12 @@
|
||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
|
|
||||||
from flask import Flask, request, render_template
|
from flask import Flask, request, render_template
|
||||||
from flask_wtf import FlaskForm
|
|
||||||
from wtforms import StringField, IntegerField, FloatField, validators
|
|
||||||
from wtforms.validators import InputRequired
|
|
||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
from urllib.request import urlopen
|
from urllib.request import urlopen
|
||||||
import json
|
import json
|
||||||
from config import *
|
from config import *
|
||||||
|
from forms import *
|
||||||
|
|
||||||
# logging helper
|
|
||||||
def log(*args):
|
|
||||||
print(args[0] % (len(args) > 1 and args[1:] or []))
|
|
||||||
sys.stdout.flush()
|
|
||||||
|
|
||||||
|
|
||||||
class Search(FlaskForm):
|
|
||||||
search = StringField('Search', [validators.InputRequired()])
|
|
||||||
|
|
||||||
|
|
||||||
class City(FlaskForm):
|
|
||||||
insee = StringField('Insee', [validators.InputRequired()])
|
|
||||||
|
|
||||||
|
|
||||||
class Around(FlaskForm):
|
|
||||||
insee = StringField('Insee', [validators.InputRequired()])
|
|
||||||
|
|
||||||
def getApiCity(search):
|
def getApiCity(search):
|
||||||
if METEOCONCEPT_TOKEN is None:
|
if METEOCONCEPT_TOKEN is None:
|
||||||
|
|
@ -104,19 +84,19 @@ def index():
|
||||||
city = City()
|
city = City()
|
||||||
around = Around()
|
around = Around()
|
||||||
|
|
||||||
if search.validate_on_submit():
|
if search.submit_search.data and search.validate_on_submit():
|
||||||
return render_template('index.html', cities=getApiCity(search))
|
return render_template('index.html', cities=getApiCity(search))
|
||||||
|
|
||||||
if city.validate_on_submit():
|
if city.submit_city.data and city.validate_on_submit():
|
||||||
return render_template('index.html', ephemeride=getEphemeride(city))
|
return render_template('index.html', ephemeride=getEphemeride(city))
|
||||||
|
|
||||||
if around.validate_on_submit():
|
if around.submit_around.data and around.validate_on_submit():
|
||||||
return render_template('index.html', around=getAround(around, 1))
|
return render_template('index.html', around=getAround(around, 1))
|
||||||
|
|
||||||
# TODO Multiple form for insee ? or ajax ?
|
# TODO Multiple form for insee ? or ajax ?
|
||||||
# insee = request.form['insee']
|
insee = request.form['insee']
|
||||||
# response_ephemeride = getEphemeride(insee)
|
response_ephemeride = getEphemeride(insee)
|
||||||
# response_around = getAround(insee, 1)
|
response_around = getAround(insee, 1)
|
||||||
|
|
||||||
return render_template('index.html', cities=response_cities, ephemeride=response_ephemeride, around=response_around)
|
return render_template('index.html', cities=response_cities, ephemeride=response_ephemeride, around=response_around)
|
||||||
|
|
||||||
|
|
|
||||||
221
config.py
221
config.py
|
|
@ -1,3 +1,12 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
# logging helper
|
||||||
|
def log(*args):
|
||||||
|
print(args[0] % (len(args) > 1 and args[1:] or []))
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
|
||||||
# JSON DUMPS
|
# JSON DUMPS
|
||||||
INDENT = 4
|
INDENT = 4
|
||||||
|
|
||||||
|
|
@ -16,111 +25,111 @@ API_OBSERVATIONS_AROUND = BASE_API_URL + 'observations/around'
|
||||||
|
|
||||||
# STATIC VARIABLES
|
# STATIC VARIABLES
|
||||||
WINDDIRS = [
|
WINDDIRS = [
|
||||||
'Nord',
|
'Nord',
|
||||||
'Nord-Nord-Est',
|
'Nord-Nord-Est',
|
||||||
'Nord-Est',
|
'Nord-Est',
|
||||||
'Est-Nord-Est',
|
'Est-Nord-Est',
|
||||||
'Est',
|
'Est',
|
||||||
'Est-Sud-Est',
|
'Est-Sud-Est',
|
||||||
'Sud-Est',
|
'Sud-Est',
|
||||||
'Sud-Sud-Est',
|
'Sud-Sud-Est',
|
||||||
'Sud',
|
'Sud',
|
||||||
'Sud-Sud-Ouest',
|
'Sud-Sud-Ouest',
|
||||||
'Sud-Ouest',
|
'Sud-Ouest',
|
||||||
'Ouest-Sud-Ouest',
|
'Ouest-Sud-Ouest',
|
||||||
'Ouest',
|
'Ouest',
|
||||||
'Ouest-Nord-Ouest',
|
'Ouest-Nord-Ouest',
|
||||||
'Nord-Ouest',
|
'Nord-Ouest',
|
||||||
'Nord-Nord-Ouest',
|
'Nord-Nord-Ouest',
|
||||||
'Nord'
|
'Nord'
|
||||||
]
|
]
|
||||||
WEATHER = {
|
WEATHER = {
|
||||||
0: "Soleil",
|
0: "Soleil",
|
||||||
1: "Peu nuageux",
|
1: "Peu nuageux",
|
||||||
2: "Ciel voilé",
|
2: "Ciel voilé",
|
||||||
3: "Nuageux",
|
3: "Nuageux",
|
||||||
4: "Très nuageux",
|
4: "Très nuageux",
|
||||||
5: "Couvert",
|
5: "Couvert",
|
||||||
6: "Brouillard",
|
6: "Brouillard",
|
||||||
7: "Brouillard givrant",
|
7: "Brouillard givrant",
|
||||||
10: "Pluie faible",
|
10: "Pluie faible",
|
||||||
11: "Pluie modérée",
|
11: "Pluie modérée",
|
||||||
12: "Pluie forte",
|
12: "Pluie forte",
|
||||||
13: "Pluie faible verglaçante",
|
13: "Pluie faible verglaçante",
|
||||||
14: "Pluie modérée verglaçante",
|
14: "Pluie modérée verglaçante",
|
||||||
15: "Pluie forte verglaçante",
|
15: "Pluie forte verglaçante",
|
||||||
16: "Bruine",
|
16: "Bruine",
|
||||||
20: "Neige faible",
|
20: "Neige faible",
|
||||||
21: "Neige modérée",
|
21: "Neige modérée",
|
||||||
22: "Neige forte",
|
22: "Neige forte",
|
||||||
30: "Pluie et neige mêlées faibles",
|
30: "Pluie et neige mêlées faibles",
|
||||||
31: "Pluie et neige mêlées modérées",
|
31: "Pluie et neige mêlées modérées",
|
||||||
32: "Pluie et neige mêlées fortes",
|
32: "Pluie et neige mêlées fortes",
|
||||||
40: "Averses de pluie locales et faibles",
|
40: "Averses de pluie locales et faibles",
|
||||||
41: "Averses de pluie locales",
|
41: "Averses de pluie locales",
|
||||||
42: "Averses locales et fortes",
|
42: "Averses locales et fortes",
|
||||||
43: "Averses de pluie faibles",
|
43: "Averses de pluie faibles",
|
||||||
44: "Averses de pluie",
|
44: "Averses de pluie",
|
||||||
45: "Averses de pluie fortes",
|
45: "Averses de pluie fortes",
|
||||||
46: "Averses de pluie faibles et fréquentes",
|
46: "Averses de pluie faibles et fréquentes",
|
||||||
47: "Averses de pluie fréquentes",
|
47: "Averses de pluie fréquentes",
|
||||||
48: "Averses de pluie fortes et fréquentes",
|
48: "Averses de pluie fortes et fréquentes",
|
||||||
60: "Averses de neige localisées et faibles",
|
60: "Averses de neige localisées et faibles",
|
||||||
61: "Averses de neige localisées",
|
61: "Averses de neige localisées",
|
||||||
62: "Averses de neige localisées et fortes",
|
62: "Averses de neige localisées et fortes",
|
||||||
63: "Averses de neige faibles",
|
63: "Averses de neige faibles",
|
||||||
64: "Averses de neige",
|
64: "Averses de neige",
|
||||||
65: "Averses de neige fortes",
|
65: "Averses de neige fortes",
|
||||||
66: "Averses de neige faibles et fréquentes",
|
66: "Averses de neige faibles et fréquentes",
|
||||||
67: "Averses de neige fréquentes",
|
67: "Averses de neige fréquentes",
|
||||||
68: "Averses de neige fortes et fréquentes",
|
68: "Averses de neige fortes et fréquentes",
|
||||||
70: "Averses de pluie et neige mêlées localisées et faibles",
|
70: "Averses de pluie et neige mêlées localisées et faibles",
|
||||||
71: "Averses de pluie et neige mêlées localisées",
|
71: "Averses de pluie et neige mêlées localisées",
|
||||||
72: "Averses de pluie et neige mêlées localisées et fortes",
|
72: "Averses de pluie et neige mêlées localisées et fortes",
|
||||||
73: "Averses de pluie et neige mêlées faibles",
|
73: "Averses de pluie et neige mêlées faibles",
|
||||||
74: "Averses de pluie et neige mêlées",
|
74: "Averses de pluie et neige mêlées",
|
||||||
75: "Averses de pluie et neige mêlées fortes",
|
75: "Averses de pluie et neige mêlées fortes",
|
||||||
76: "Averses de pluie et neige mêlées faibles et nombreuses",
|
76: "Averses de pluie et neige mêlées faibles et nombreuses",
|
||||||
77: "Averses de pluie et neige mêlées fréquentes",
|
77: "Averses de pluie et neige mêlées fréquentes",
|
||||||
78: "Averses de pluie et neige mêlées fortes et fréquentes",
|
78: "Averses de pluie et neige mêlées fortes et fréquentes",
|
||||||
100: "Orages faibles et locaux",
|
100: "Orages faibles et locaux",
|
||||||
101: "Orages locaux",
|
101: "Orages locaux",
|
||||||
102: "Orages fort et locaux",
|
102: "Orages fort et locaux",
|
||||||
103: "Orages faibles",
|
103: "Orages faibles",
|
||||||
104: "Orages",
|
104: "Orages",
|
||||||
105: "Orages forts",
|
105: "Orages forts",
|
||||||
106: "Orages faibles et fréquents",
|
106: "Orages faibles et fréquents",
|
||||||
107: "Orages fréquents",
|
107: "Orages fréquents",
|
||||||
108: "Orages forts et fréquents",
|
108: "Orages forts et fréquents",
|
||||||
120: "Orages faibles et locaux de neige ou grésil",
|
120: "Orages faibles et locaux de neige ou grésil",
|
||||||
121: "Orages locaux de neige ou grésil",
|
121: "Orages locaux de neige ou grésil",
|
||||||
122: "Orages locaux de neige ou grésil",
|
122: "Orages locaux de neige ou grésil",
|
||||||
123: "Orages faibles de neige ou grésil",
|
123: "Orages faibles de neige ou grésil",
|
||||||
124: "Orages de neige ou grésil",
|
124: "Orages de neige ou grésil",
|
||||||
125: "Orages de neige ou grésil",
|
125: "Orages de neige ou grésil",
|
||||||
126: "Orages faibles et fréquents de neige ou grésil",
|
126: "Orages faibles et fréquents de neige ou grésil",
|
||||||
127: "Orages fréquents de neige ou grésil",
|
127: "Orages fréquents de neige ou grésil",
|
||||||
128: "Orages fréquents de neige ou grésil",
|
128: "Orages fréquents de neige ou grésil",
|
||||||
130: "Orages faibles et locaux de pluie et neige mêlées ou grésil",
|
130: "Orages faibles et locaux de pluie et neige mêlées ou grésil",
|
||||||
131: "Orages locaux de pluie et neige mêlées ou grésil",
|
131: "Orages locaux de pluie et neige mêlées ou grésil",
|
||||||
132: "Orages fort et locaux de pluie et neige mêlées ou grésil",
|
132: "Orages fort et locaux de pluie et neige mêlées ou grésil",
|
||||||
133: "Orages faibles de pluie et neige mêlées ou grésil",
|
133: "Orages faibles de pluie et neige mêlées ou grésil",
|
||||||
134: "Orages de pluie et neige mêlées ou grésil",
|
134: "Orages de pluie et neige mêlées ou grésil",
|
||||||
135: "Orages forts de pluie et neige mêlées ou grésil",
|
135: "Orages forts de pluie et neige mêlées ou grésil",
|
||||||
136: "Orages faibles et fréquents de pluie et neige mêlées ou grésil",
|
136: "Orages faibles et fréquents de pluie et neige mêlées ou grésil",
|
||||||
137: "Orages fréquents de pluie et neige mêlées ou grésil",
|
137: "Orages fréquents de pluie et neige mêlées ou grésil",
|
||||||
138: "Orages forts et fréquents de pluie et neige mêlées ou grésil",
|
138: "Orages forts et fréquents de pluie et neige mêlées ou grésil",
|
||||||
140: "Pluies orageuses",
|
140: "Pluies orageuses",
|
||||||
141: "Pluie et neige mêlées à caractère orageux",
|
141: "Pluie et neige mêlées à caractère orageux",
|
||||||
142: "Neige à caractère orageux",
|
142: "Neige à caractère orageux",
|
||||||
210: "Pluie faible intermittente",
|
210: "Pluie faible intermittente",
|
||||||
211: "Pluie modérée intermittente",
|
211: "Pluie modérée intermittente",
|
||||||
212: "Pluie forte intermittente",
|
212: "Pluie forte intermittente",
|
||||||
220: "Neige faible intermittente",
|
220: "Neige faible intermittente",
|
||||||
221: "Neige modérée intermittente",
|
221: "Neige modérée intermittente",
|
||||||
222: "Neige forte intermittente",
|
222: "Neige forte intermittente",
|
||||||
230: "Pluie et neige mêlées",
|
230: "Pluie et neige mêlées",
|
||||||
231: "Pluie et neige mêlées",
|
231: "Pluie et neige mêlées",
|
||||||
232: "Pluie et neige mêlées",
|
232: "Pluie et neige mêlées",
|
||||||
235: "Averses de grêle",
|
235: "Averses de grêle",
|
||||||
}
|
}
|
||||||
|
|
|
||||||
18
forms.py
Normal file
18
forms.py
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
from flask_wtf import FlaskForm
|
||||||
|
from wtforms import StringField, SubmitField, validators
|
||||||
|
from wtforms.validators import InputRequired
|
||||||
|
|
||||||
|
|
||||||
|
class Search(FlaskForm):
|
||||||
|
search = StringField('Search', [validators.InputRequired()])
|
||||||
|
submit_search = SubmitField('submit')
|
||||||
|
|
||||||
|
|
||||||
|
class City(FlaskForm):
|
||||||
|
insee = StringField('Insee', [validators.InputRequired()])
|
||||||
|
submit_city = SubmitField('submit')
|
||||||
|
|
||||||
|
|
||||||
|
class Around(FlaskForm):
|
||||||
|
insee = StringField('Insee', [validators.InputRequired()])
|
||||||
|
submit_around = SubmitField('submit')
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
Flask_WTF==0.15.1
|
Flask_WTF==0.15.1
|
||||||
Flask==2.0.2
|
Flask==2.0.2
|
||||||
Loading…
Add table
Add a link
Reference in a new issue