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 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
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 # 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
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')

View file

@ -1,2 +1,2 @@
Flask_WTF==0.15.1 Flask_WTF==0.15.1
Flask==2.0.2 Flask==2.0.2