Bunch of ui stuff

This commit is contained in:
Jonathan Carter
2025-08-31 14:53:40 +02:00
parent c0aa82241b
commit 088bf495f5
10 changed files with 115 additions and 102 deletions

View File

@@ -6,6 +6,8 @@ from flask import current_app
import gettext
import dmm.lsblk as lsblk
import dmm.timezone as timezone
import subprocess
import socket
# Set up Gettext
def set_language(LANG):
@@ -37,8 +39,9 @@ def welcome_index():
print(request.form["timezone"])
global lang
lang = current_app.config['CONFIG']['settings']['language']
blkid = lsblk.list_scsi_devices()
set_language(lang)
string_dict = build_stringlist()
blkid = lsblk.list_scsi_devices()
build_menu()
build_summary()
menu = current_app.config['CONFIG']['settings']['menu_order'].split(" ")
@@ -51,12 +54,11 @@ def welcome_index():
else:
previous_step_url = menu[menu.index("users")-1]
print("next is: " + next_step_url)
print("previous is: " , previous_step_url)
power_button = '<button class="button is-dark"> <i class="fa fa-check" aria-hidden="true"></i> &nbsp; Power: AC </button>'
internet_button = '&nbsp; <button class="button is-dark"> <i class="fa fa-check" aria-hidden="true"></i> &nbsp; Internet </button>'
power_button = '<button id="powerbutton" hx-get="/welcome/battery/button" hx-trigger="load, every 1s" hx-target="#powerbutton" class="button is-dark"> <span style="color: #ffffff;"> <i class="fa fa-question" aria-hidden="true"></i></span> &nbsp; Power </button>'
internet_button = '&nbsp; <button id="internetbutton" class="button is-dark" hx-get="/welcome/internet/button" hx-trigger="load, every 1s" hx-target="#internetbutton"><span style="color: #ffffff;"> <i class="fa fa-question" aria-hidden="true"></i></span> &nbsp; Internet </button>'
bottom_menu = power_button + internet_button
return render_template('welcome.html',
string_dict=string_dict, selected_lang=lang,
menu=current_app.config['CONFIG']['settings']['menu'],
@@ -67,6 +69,66 @@ def welcome_index():
bottom_menu=bottom_menu)
@bp.route('/welcome/battery',methods=['GET', 'POST', 'PUT'])
def welcome_battery():
"""
Are we running on battery?
How much power do we have?
"""
if "yes" in str(subprocess.check_output("LANG=C upower -d | grep on-battery", shell=True)):
on_battery = True
else:
on_battery = False
if on_battery:
percentage = str(subprocess.check_output('LANG=C upower -d | grep '
'percentage | head -1 | cut -f 2 -d":" | '
'sed "s/ //g"', shell=True)).strip("'b").strip("%\\n")
else:
percentage = False
status = {}
status = {"on_battery": on_battery, "percentage": percentage}
return status
@bp.route('/welcome/battery/button',methods=['GET', 'POST', 'PUT'])
def welcome_battery_button():
"""
Returns the html power button.
"""
on_battery, percentage = welcome_battery()['on_battery'], welcome_battery()['percentage']
if on_battery:
power_button = '<button id="powerbutton hx-get="/welcome/battery/button" hx-trigger="load, every 1s" hx-target="#powerbutton" class="button is-dark"> <span style="color: #ffa45c;"> <i class="fa fa-warning" aria-hidden="true"></i></span> &nbsp; Power: Battery: ' + percentage + '%</button>'
else:
power_button = '<button id="powerbutton hx-get="/welcome/battery/button" hx-trigger="load, every 1s" hx-target="#powerbutton" class="button is-dark"> <span style="color: #a0ff98;"> <i class="fa fa-check" aria-hidden="true"></i></span> &nbsp; Power </button>'
return str(power_button)
@bp.route('/welcome/internet', methods=['GET'])
def has_internet():
"""
Very rudimentary internet check.
Check if we can resolve deb.debian.org.
"""
try:
socket.getaddrinfo("deb.debian.org", 80, proto=socket.IPPROTO_TCP)
canhas = True
except socket.gaierror:
canhas = False
return canhas
@bp.route('/welcome/internet/button', methods=['GET'])
def welcome_internet_button():
"""
Draw updated button depending on internet status.
"""
if has_internet():
return('&nbsp; <button id="internetbutton" class="button is-dark" hx-get="/welcome/internet/button" hx-trigger="load, every 1s" hx-target="#internetbutton"><span style="color: #a0ff98;"> <i class="fa fa-check" aria-hidden="true"></i></span> &nbsp; Internet </button>')
else:
return('&nbsp; <button id="internetbutton" class="button is-dark" hx-get="/welcome/internet/button" hx-trigger="load, every 1s" hx-target="#internetbutton"><span style="color: #ffa45c;"> <i class="fa fa-warning" aria-hidden="true"></i></span> &nbsp; Internet </button>')
def build_stringlist():
"""
Return all the strings that is used in this applet."
@@ -88,6 +150,7 @@ def build_stringlist():
string_dict['lang_list'] = lang_dict
return string_dict
def build_menu():
"""
Define menu items and paths.