This commit is contained in:
yukivachot@gmail.com 2021-11-08 15:31:39 +01:00
parent 1d2bb73082
commit f6a26e7a37
4 changed files with 142 additions and 135 deletions

36
app.py
View file

@ -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)

219
config.py
View file

@ -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
View 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')