diff --git a/app.py b/app.py index 33eeac8..793f29e 100644 --- a/app.py +++ b/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) diff --git a/config.py b/config.py index f24521d..de6f00f 100644 --- a/config.py +++ b/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", -} \ No newline at end of file + 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", +} diff --git a/forms.py b/forms.py new file mode 100644 index 0000000..be529ff --- /dev/null +++ b/forms.py @@ -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') \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 73ebb9a..fdc3e37 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ Flask_WTF==0.15.1 -Flask==2.0.2 +Flask==2.0.2 \ No newline at end of file