You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kmftools/weer_app/main.py

68 lines
1.9 KiB

from flask import Flask, render_template
from modules import database
from dotenv import load_dotenv
import os
# Laad omgevingsvariabelen vanuit .env bestand
load_dotenv()
app = Flask(__name__)
# Configuratie voor database en logging uit omgevingsvariabelen
config = {
'user': os.getenv('DB_USER'),
'password': os.getenv('DB_PASSWORD'),
'host': os.getenv('DB_HOST'),
'database': os.getenv('DB_NAME')
}
logger = app.logger # Flask loggers
def calculate_windkracht(wind_speed):
"""Berekent de windkracht op basis van de wind_snelheid (m/s)."""
if wind_speed <= 0.2:
return "Windstil", 0
elif wind_speed <= 1.5:
return "Zwak", 1
elif wind_speed <= 3.3:
return "Matig", 2
elif wind_speed <= 5.4:
return "Frisse wind", 3
elif wind_speed <= 7.9:
return "Harde wind", 4
elif wind_speed <= 10.7:
return "Stormachtig", 5
else:
return "Storm", 6
@app.route('/')
def index():
# Maak een database-object (pas de naam aan naar Database)
db = database.Database(config, logger) # Veranderd naar database.Database
# Haal de weerdata op uit de database
weather_data = db.get_weather_data()
# Verwerk de windkracht op basis van de gemiddelde wind_speed
for entry in weather_data:
wind_speed = entry['avg_wind_speed']
if wind_speed is not None:
entry['windkracht_tekst'], entry['windkracht_num'] = calculate_windkracht(
wind_speed)
else:
entry['windkracht_tekst'] = "Gegevens niet beschikbaar"
entry['windkracht_num'] = None
# Voeg de dag van de week toe (bijvoorbeeld 'Maandag', 'Dinsdag', etc.)
# Gebruik direct strftime op een datetime object
entry['dag_van_de_week'] = entry['date'].strftime('%A')
# Geef de verwerkte data door aan de template
return render_template('index.html', weather_data=weather_data)
if __name__ == '__main__':
app.run(debug=True)