from flask import Flask, render_template, request, redirect, url_for from flask_navigation import Navigation from Webserver.Translater import Translater, Language from Zone import Zone def startWebserver(port, zoneManager): translater_EN = Translater(Language.ENGLISH) translater_DE = Translater(Language.GERMAN) translater = translater_EN app = Flask("Bewässerungssystem", template_folder="Webserver/templates", static_folder="Webserver/static") nav = Navigation(app) nav.Bar('top', [ nav.Item(translater.getTranslation('Dashboard'), 'showDashboard'), nav.Item(translater.getTranslation('irrigation zones'), 'showZones'), nav.Item(translater.getTranslation('blocking times'), 'showTimes'), nav.Item(translater.getTranslation('system settings'), 'showSystem') # nav.Item('Gfg', 'gfg', {'page': 5}), #(example with pages) ]) # Example Route with pages: # @app.route('/gfg/') # def gfg(page): # return render_template('gfg.html', page=page) @app.route('/') def startPage(): return redirect(url_for('showDashboard')) @app.route('/action///') def executeAction(command=False, index_str=False, value_str=False): sucess = False index = int(index_str) value = int(value_str) match command: case "switch_zone_on": if (index and value): zoneManager.switchZoneIndexState(zoneIndex=index, state=True, duration=value) case "switch_zone_off": if (index and value): zoneManager.switchZoneIndexState(zoneIndex=index, state=False, duration=value) case "switch_zone_mode": if (index and value): zone = zoneManager.getZone(index) match value: case "automatic": zone.switchMode(autoMode=True) case "manual": zone.switchMode(autoMode=False) case "set_desired_humidity": if (index and value): zone = zoneManager.getZone(index) zone.desiredHumidity = value return render_template('action.html', translater=translater, zones=zoneManager.zones) @app.route('/dashboard') def showDashboard(): return render_template('dashboard.html', translater=translater, zones=zoneManager.zones) @app.route('/zones') @app.route('/zones/') def showZones(zoneNumber=False): if (zoneNumber): return render_template('zone.html', translater=translater, zone=zoneManager.getZone(zoneNumber)) else: return render_template('zones.html', translater=translater, zones=zoneManager.zones) @app.route('/times') def showTimes(): return render_template('times.html', translater=translater) @app.route('/system') def showSystem(): return render_template('system.html', translater=translater) app.run(debug=True, port=port)