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 sys
|
||||
|
||||
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 urllib.request import urlopen
|
||||
import json
|
||||
from config 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()])
|
||||
from forms import *
|
||||
|
||||
def getApiCity(search):
|
||||
if METEOCONCEPT_TOKEN is None:
|
||||
|
|
@ -104,19 +84,19 @@ def index():
|
|||
city = City()
|
||||
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))
|
||||
|
||||
if city.validate_on_submit():
|
||||
if city.submit_city.data and city.validate_on_submit():
|
||||
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))
|
||||
|
||||
# TODO Multiple form for insee ? or ajax ?
|
||||
# insee = request.form['insee']
|
||||
# response_ephemeride = getEphemeride(insee)
|
||||
# response_around = getAround(insee, 1)
|
||||
insee = request.form['insee']
|
||||
response_ephemeride = getEphemeride(insee)
|
||||
response_around = getAround(insee, 1)
|
||||
|
||||
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
|
||||
INDENT = 4
|
||||
|
||||
|
|
@ -16,111 +25,111 @@ API_OBSERVATIONS_AROUND = BASE_API_URL + 'observations/around'
|
|||
|
||||
# STATIC VARIABLES
|
||||
WINDDIRS = [
|
||||
'Nord',
|
||||
'Nord-Nord-Est',
|
||||
'Nord-Est',
|
||||
'Est-Nord-Est',
|
||||
'Est',
|
||||
'Est-Sud-Est',
|
||||
'Sud-Est',
|
||||
'Sud-Sud-Est',
|
||||
'Sud',
|
||||
'Sud-Sud-Ouest',
|
||||
'Sud-Ouest',
|
||||
'Ouest-Sud-Ouest',
|
||||
'Ouest',
|
||||
'Ouest-Nord-Ouest',
|
||||
'Nord-Ouest',
|
||||
'Nord-Nord-Ouest',
|
||||
'Nord'
|
||||
'Nord',
|
||||
'Nord-Nord-Est',
|
||||
'Nord-Est',
|
||||
'Est-Nord-Est',
|
||||
'Est',
|
||||
'Est-Sud-Est',
|
||||
'Sud-Est',
|
||||
'Sud-Sud-Est',
|
||||
'Sud',
|
||||
'Sud-Sud-Ouest',
|
||||
'Sud-Ouest',
|
||||
'Ouest-Sud-Ouest',
|
||||
'Ouest',
|
||||
'Ouest-Nord-Ouest',
|
||||
'Nord-Ouest',
|
||||
'Nord-Nord-Ouest',
|
||||
'Nord'
|
||||
]
|
||||
WEATHER = {
|
||||
0: "Soleil",
|
||||
1: "Peu nuageux",
|
||||
2: "Ciel voilé",
|
||||
3: "Nuageux",
|
||||
4: "Très nuageux",
|
||||
5: "Couvert",
|
||||
6: "Brouillard",
|
||||
7: "Brouillard givrant",
|
||||
10: "Pluie faible",
|
||||
11: "Pluie modérée",
|
||||
12: "Pluie forte",
|
||||
13: "Pluie faible verglaçante",
|
||||
14: "Pluie modérée verglaçante",
|
||||
15: "Pluie forte verglaçante",
|
||||
16: "Bruine",
|
||||
20: "Neige faible",
|
||||
21: "Neige modérée",
|
||||
22: "Neige forte",
|
||||
30: "Pluie et neige mêlées faibles",
|
||||
31: "Pluie et neige mêlées modérées",
|
||||
32: "Pluie et neige mêlées fortes",
|
||||
40: "Averses de pluie locales et faibles",
|
||||
41: "Averses de pluie locales",
|
||||
42: "Averses locales et fortes",
|
||||
43: "Averses de pluie faibles",
|
||||
44: "Averses de pluie",
|
||||
45: "Averses de pluie fortes",
|
||||
46: "Averses de pluie faibles et fréquentes",
|
||||
47: "Averses de pluie fréquentes",
|
||||
48: "Averses de pluie fortes et fréquentes",
|
||||
60: "Averses de neige localisées et faibles",
|
||||
61: "Averses de neige localisées",
|
||||
62: "Averses de neige localisées et fortes",
|
||||
63: "Averses de neige faibles",
|
||||
64: "Averses de neige",
|
||||
65: "Averses de neige fortes",
|
||||
66: "Averses de neige faibles et fréquentes",
|
||||
67: "Averses de neige fréquentes",
|
||||
68: "Averses de neige fortes et fréquentes",
|
||||
70: "Averses de pluie et neige mêlées localisées et faibles",
|
||||
71: "Averses de pluie et neige mêlées localisées",
|
||||
72: "Averses de pluie et neige mêlées localisées et fortes",
|
||||
73: "Averses de pluie et neige mêlées faibles",
|
||||
74: "Averses de pluie et neige mêlées",
|
||||
75: "Averses de pluie et neige mêlées fortes",
|
||||
76: "Averses de pluie et neige mêlées faibles et nombreuses",
|
||||
77: "Averses de pluie et neige mêlées fréquentes",
|
||||
78: "Averses de pluie et neige mêlées fortes et fréquentes",
|
||||
100: "Orages faibles et locaux",
|
||||
101: "Orages locaux",
|
||||
102: "Orages fort et locaux",
|
||||
103: "Orages faibles",
|
||||
104: "Orages",
|
||||
105: "Orages forts",
|
||||
106: "Orages faibles et fréquents",
|
||||
107: "Orages fréquents",
|
||||
108: "Orages forts et fréquents",
|
||||
120: "Orages faibles et locaux de neige ou grésil",
|
||||
121: "Orages locaux de neige ou grésil",
|
||||
122: "Orages locaux de neige ou grésil",
|
||||
123: "Orages faibles de neige ou grésil",
|
||||
124: "Orages de neige ou grésil",
|
||||
125: "Orages 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",
|
||||
128: "Orages fréquents de neige 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",
|
||||
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",
|
||||
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",
|
||||
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",
|
||||
138: "Orages forts et fréquents de pluie et neige mêlées ou grésil",
|
||||
140: "Pluies orageuses",
|
||||
141: "Pluie et neige mêlées à caractère orageux",
|
||||
142: "Neige à caractère orageux",
|
||||
210: "Pluie faible intermittente",
|
||||
211: "Pluie modérée intermittente",
|
||||
212: "Pluie forte intermittente",
|
||||
220: "Neige faible intermittente",
|
||||
221: "Neige modérée intermittente",
|
||||
222: "Neige forte intermittente",
|
||||
230: "Pluie et neige mêlées",
|
||||
231: "Pluie et neige mêlées",
|
||||
232: "Pluie et neige mêlées",
|
||||
235: "Averses de grêle",
|
||||
}
|
||||
0: "Soleil",
|
||||
1: "Peu nuageux",
|
||||
2: "Ciel voilé",
|
||||
3: "Nuageux",
|
||||
4: "Très nuageux",
|
||||
5: "Couvert",
|
||||
6: "Brouillard",
|
||||
7: "Brouillard givrant",
|
||||
10: "Pluie faible",
|
||||
11: "Pluie modérée",
|
||||
12: "Pluie forte",
|
||||
13: "Pluie faible verglaçante",
|
||||
14: "Pluie modérée verglaçante",
|
||||
15: "Pluie forte verglaçante",
|
||||
16: "Bruine",
|
||||
20: "Neige faible",
|
||||
21: "Neige modérée",
|
||||
22: "Neige forte",
|
||||
30: "Pluie et neige mêlées faibles",
|
||||
31: "Pluie et neige mêlées modérées",
|
||||
32: "Pluie et neige mêlées fortes",
|
||||
40: "Averses de pluie locales et faibles",
|
||||
41: "Averses de pluie locales",
|
||||
42: "Averses locales et fortes",
|
||||
43: "Averses de pluie faibles",
|
||||
44: "Averses de pluie",
|
||||
45: "Averses de pluie fortes",
|
||||
46: "Averses de pluie faibles et fréquentes",
|
||||
47: "Averses de pluie fréquentes",
|
||||
48: "Averses de pluie fortes et fréquentes",
|
||||
60: "Averses de neige localisées et faibles",
|
||||
61: "Averses de neige localisées",
|
||||
62: "Averses de neige localisées et fortes",
|
||||
63: "Averses de neige faibles",
|
||||
64: "Averses de neige",
|
||||
65: "Averses de neige fortes",
|
||||
66: "Averses de neige faibles et fréquentes",
|
||||
67: "Averses de neige fréquentes",
|
||||
68: "Averses de neige fortes et fréquentes",
|
||||
70: "Averses de pluie et neige mêlées localisées et faibles",
|
||||
71: "Averses de pluie et neige mêlées localisées",
|
||||
72: "Averses de pluie et neige mêlées localisées et fortes",
|
||||
73: "Averses de pluie et neige mêlées faibles",
|
||||
74: "Averses de pluie et neige mêlées",
|
||||
75: "Averses de pluie et neige mêlées fortes",
|
||||
76: "Averses de pluie et neige mêlées faibles et nombreuses",
|
||||
77: "Averses de pluie et neige mêlées fréquentes",
|
||||
78: "Averses de pluie et neige mêlées fortes et fréquentes",
|
||||
100: "Orages faibles et locaux",
|
||||
101: "Orages locaux",
|
||||
102: "Orages fort et locaux",
|
||||
103: "Orages faibles",
|
||||
104: "Orages",
|
||||
105: "Orages forts",
|
||||
106: "Orages faibles et fréquents",
|
||||
107: "Orages fréquents",
|
||||
108: "Orages forts et fréquents",
|
||||
120: "Orages faibles et locaux de neige ou grésil",
|
||||
121: "Orages locaux de neige ou grésil",
|
||||
122: "Orages locaux de neige ou grésil",
|
||||
123: "Orages faibles de neige ou grésil",
|
||||
124: "Orages de neige ou grésil",
|
||||
125: "Orages 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",
|
||||
128: "Orages fréquents de neige 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",
|
||||
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",
|
||||
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",
|
||||
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",
|
||||
138: "Orages forts et fréquents de pluie et neige mêlées ou grésil",
|
||||
140: "Pluies orageuses",
|
||||
141: "Pluie et neige mêlées à caractère orageux",
|
||||
142: "Neige à caractère orageux",
|
||||
210: "Pluie faible intermittente",
|
||||
211: "Pluie modérée intermittente",
|
||||
212: "Pluie forte intermittente",
|
||||
220: "Neige faible intermittente",
|
||||
221: "Neige modérée intermittente",
|
||||
222: "Neige forte intermittente",
|
||||
230: "Pluie et neige mêlées",
|
||||
231: "Pluie et neige mêlées",
|
||||
232: "Pluie et neige mêlées",
|
||||
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==2.0.2
|
||||
Flask==2.0.2
|
||||
Loading…
Add table
Add a link
Reference in a new issue