Compare commits

..

16 Commits

Author SHA1 Message Date
Stefan Allius
9acce70317 add unit tests for all favicons 2025-04-18 03:12:02 +02:00
Stefan Allius
e1cc5c3c2c fix sonarqube warnings 2025-04-18 02:49:48 +02:00
Stefan Allius
a2866955e6 add all font and favicons to add-on 2025-04-18 01:47:10 +02:00
Stefan Allius
f422c5ba91 adapt unit tests 2025-04-18 01:29:23 +02:00
Stefan Allius
ae3cf2a68c load fonts locally 2025-04-18 01:28:43 +02:00
Stefan Allius
5cedece1b3 add more favicons formats 2025-04-18 01:27:07 +02:00
Stefan Allius
b26f7ba591 add more favicon formats 2025-04-18 01:26:11 +02:00
Stefan Allius
2ab200e199 add awesome web font 2025-04-18 01:25:18 +02:00
Stefan Allius
bf523c0713 add Roboto font 2025-04-18 01:24:19 +02:00
Stefan Allius
f33209bf8f add favicon.ico 2025-04-17 20:33:17 +02:00
Stefan Allius
9c7b891a60 add favicon.ico 2025-04-17 20:24:20 +02:00
Stefan Allius
4d3166b81f fix unit test for test dashboard 2025-04-17 18:06:17 +02:00
Stefan Allius
e31a5a2f5a add w3.css dashboard 2025-04-17 00:14:48 +02:00
Stefan Allius
5eded48ee8 add test template and stylesheet 2025-04-16 19:42:52 +02:00
Stefan Allius
7425195b8b copy web-file into the add-on container 2025-04-16 19:42:24 +02:00
Stefan Allius
3862abc8e4 configure path to web files for Quart 2025-04-16 19:41:27 +02:00
12 changed files with 12 additions and 93 deletions

4
.gitignore vendored
View File

@@ -13,7 +13,3 @@ Doku/**
.env .env
.venv .venv
coverage.xml coverage.xml
*.pot
*.mo
*.log
*.log.*

View File

@@ -1,13 +1,12 @@
.PHONY: build babel clean addon-dev addon-debug addon-rc addon-rel debug dev preview rc rel check-docker-compose install .PHONY: build clean addon-dev addon-debug addon-rc addon-rel debug dev preview rc rel check-docker-compose install
babel debug dev preview rc rel: debug dev preview rc rel:
$(MAKE) -C app $@ $(MAKE) -C app $@
clean build: clean build:
$(MAKE) -C ha_addons $@ $(MAKE) -C ha_addons $@
addon-dev addon-debug addon-rc addon-rel: addon-dev addon-debug addon-rc addon-rel:
$(MAKE) -C app babel
$(MAKE) -C ha_addons $(patsubst addon-%,%,$@) $(MAKE) -C ha_addons $(patsubst addon-%,%,$@)
check-docker-compose: check-docker-compose:

View File

@@ -3,5 +3,3 @@ tests/
*.pyc *.pyc
.DS_Store .DS_Store
build.sh build.sh
*.pot
*.po

View File

@@ -6,16 +6,10 @@ IMAGE = tsun-gen3-proxy
# Folders # Folders
APP=. SRC=.
SRC=$(APP)/src
# Folders for Babel translation
BABEL_INPUT_JINJA=$(SRC)/web/templates
BABEL_INPUT= $(foreach dir,$(BABEL_INPUT_JINJA),$(wildcard $(dir)/*.html)) \
BABEL_TRANSLATIONS=$(APP)/translations
export BUILD_DATE := ${shell date -Iminutes} export BUILD_DATE := ${shell date -Iminutes}
VERSION := $(shell cat $(APP)/.version) VERSION := $(shell cat $(SRC)/.version)
export MAJOR := $(shell echo $(VERSION) | cut -f1 -d.) export MAJOR := $(shell echo $(VERSION) | cut -f1 -d.)
PUBLIC_URL := $(shell echo $(PUBLIC_CONTAINER_REGISTRY) | cut -f1 -d/) PUBLIC_URL := $(shell echo $(PUBLIC_CONTAINER_REGISTRY) | cut -f1 -d/)
@@ -45,17 +39,5 @@ preview rel:
export IMAGE=$(PUBLIC_CONTAINER_REGISTRY)$(IMAGE) && \ export IMAGE=$(PUBLIC_CONTAINER_REGISTRY)$(IMAGE) && \
docker buildx bake -f docker-bake.hcl $@ docker buildx bake -f docker-bake.hcl $@
babel: $(BABEL_TRANSLATIONS)/de/LC_MESSAGES/messages.mo $(BABEL_TRANSLATIONS)/de/LC_MESSAGES/messages.po $(BABEL_TRANSLATIONS)/messages.pot
$(BABEL_TRANSLATIONS)/%.pot : $(SRC)/.babel.cfg $(BABEL_INPUT) .PHONY: debug dev preview rc rel
@mkdir -p $(@D)
@pybabel extract -F $< --project=$(IMAGE) --version=$(VERSION) -o $@ $(SRC)
$(BABEL_TRANSLATIONS)/%/LC_MESSAGES/messages.po : $(BABEL_TRANSLATIONS)/messages.pot
@mkdir -p $(@D)
@pybabel update --init-missing -i $< -d $(BABEL_TRANSLATIONS) -l $*
$(BABEL_TRANSLATIONS)/%/LC_MESSAGES/messages.mo : $(BABEL_TRANSLATIONS)/%/LC_MESSAGES/messages.po
@pybabel compile -d $(BABEL_TRANSLATIONS) -l $*
.PHONY: babel debug dev preview rc rel

View File

@@ -2,4 +2,3 @@
schema==0.7.7 schema==0.7.7
aiocron==2.1 aiocron==2.1
quart==0.20 quart==0.20
quart-babel==1.0.7

View File

@@ -1,2 +0,0 @@
[python: **.py]
[jinja2: web/templates/**.html]

View File

@@ -4,9 +4,7 @@ import logging.handlers
import os import os
import argparse import argparse
from asyncio import StreamReader, StreamWriter from asyncio import StreamReader, StreamWriter
from quart import Quart, Response, request from quart import Quart, Response
from quart_babel import Babel
from quart_babel.locale import get_locale
from logging import config # noqa F401 from logging import config # noqa F401
from proxy import Proxy from proxy import Proxy
from inverter_ifc import InverterIfc from inverter_ifc import InverterIfc
@@ -33,28 +31,12 @@ class ProxyState:
ProxyState._is_up = value ProxyState._is_up = value
def my_get_locale():
# check how to get the locale form for the add-on - hass.selectedLanguage
# logging.info("get_locale(%s)", request.accept_languages)
return request.accept_languages.best_match(
['de', 'en']
)
app = Quart(__name__, app = Quart(__name__,
template_folder='web/templates', template_folder='web/templates',
static_folder='web/static') static_folder='web/static')
babel = Babel(app,
locale_selector=my_get_locale,
default_translation_directories='../translations')
app.register_blueprint(web_routes) app.register_blueprint(web_routes)
@app.context_processor
def utility_processor():
return dict(lang=get_locale())
@app.route('/-/ready') @app.route('/-/ready')
async def ready(): async def ready():
if ProxyState.is_up(): if ProxyState.is_up():

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="{{lang}}" > <html lang="en">
<head> <head>
<title>{% block title %}{% endblock title %}</title> <title>{% block title %}{% endblock title %}</title>
<meta charset="UTF-8"> <meta charset="UTF-8">

View File

@@ -2,7 +2,7 @@
{% block title %} TSUN Proxy - Dashboard {% endblock title%} {% block title %} TSUN Proxy - Dashboard {% endblock title%}
{% block menu1_class %}w3-blue{% endblock %} {% block menu1_class %}w3-blue{% endblock %}
{% block headline %}<i class="fa fa-dashboard"></i> {{_('My Dashboard')}}{% endblock headline %} {% block headline %}<i class="fa fa-dashboard"></i> My Dashboard{% endblock headline %}
{% block content %} {% block content %}
<div class="w3-row-padding w3-margin-bottom"> <div class="w3-row-padding w3-margin-bottom">

View File

@@ -1,25 +0,0 @@
# German translations for tsun-gen3-proxy.
# Copyright (C) 2025 ORGANIZATION
# This file is distributed under the same license as the tsun-gen3-proxy
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
#
msgid ""
msgstr ""
"Project-Id-Version: tsun-gen3-proxy 0.14.0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-04-18 20:46+0200\n"
"PO-Revision-Date: 2025-04-18 16:24+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de\n"
"Language-Team: de <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
#: src/web/templates/index.html:5
msgid "My Dashboard"
msgstr "Mein Dashboard"

View File

@@ -12,14 +12,11 @@ IMAGE = tsun-gen3-addon
SRC=../app SRC=../app
SRC_PROXY=$(SRC)/src SRC_PROXY=$(SRC)/src
CNF_PROXY=$(SRC)/config CNF_PROXY=$(SRC)/config
TRANSLATION_PROXY=$(SRC)/translations
# Target folders for building the local add-on and the docker container # Target folders for building the local add-on and the docker container
ADDON_PATH = ha_addon ADDON_PATH = ha_addon
DST=$(ADDON_PATH)/rootfs DST=$(ADDON_PATH)/rootfs
DST_PROXY=$(DST)/home/proxy DST_PROXY=$(DST)/home/proxy
DST_TRANSLATION=$(DST)/home/translations
# base director of the add-on repro for installing the add-on git repros # base director of the add-on repro for installing the add-on git repros
INST_BASE=../../ha-addons INST_BASE=../../ha-addons
@@ -95,14 +92,12 @@ SRC_FILES := $(wildcard $(SRC_PROXY)/*.py)\
$(wildcard $(SRC_PROXY)/web/static/images/*) $(wildcard $(SRC_PROXY)/web/static/images/*)
CNF_FILES := $(wildcard $(CNF_PROXY)/*.toml) CNF_FILES := $(wildcard $(CNF_PROXY)/*.toml)
MO_FILES := $(wildcard $(TRANSLATION_PROXY)/de/LC_MESSAGES/*.mo)
# determine destination files # determine destination files
TARGET_FILES = $(SRC_FILES:$(SRC_PROXY)/%=$(DST_PROXY)/%) TARGET_FILES = $(SRC_FILES:$(SRC_PROXY)/%=$(DST_PROXY)/%)
CONFIG_FILES = $(CNF_FILES:$(CNF_PROXY)/%=$(DST_PROXY)/%) CONFIG_FILES = $(CNF_FILES:$(CNF_PROXY)/%=$(DST_PROXY)/%)
TRANSLATION_FILES = $(MO_FILES:$(TRANSLATION_PROXY)/%=$(DST_TRANSLATION)/%)
rootfs: $(TARGET_FILES) $(CONFIG_FILES) $(TRANSLATION_FILES) $(DST)/requirements.txt rootfs: $(TARGET_FILES) $(CONFIG_FILES) $(DST)/requirements.txt
$(CONFIG_FILES): $(DST_PROXY)/% : $(CNF_PROXY)/% $(CONFIG_FILES): $(DST_PROXY)/% : $(CNF_PROXY)/%
@echo Copy $< to $@ @echo Copy $< to $@
@@ -114,11 +109,6 @@ $(TARGET_FILES): $(DST_PROXY)/% : $(SRC_PROXY)/%
@mkdir -p $(@D) @mkdir -p $(@D)
@cp $< $@ @cp $< $@
$(TRANSLATION_FILES): $(DST_TRANSLATION)/% : $(TRANSLATION_PROXY)/%
@echo Copy $< to $@
@mkdir -p $(@D)
@cp $< $@
$(DST)/requirements.txt : $(SRC)/requirements.txt $(DST)/requirements.txt : $(SRC)/requirements.txt
@echo Copy $< to $@ @echo Copy $< to $@
@cp $< $@ @cp $< $@

View File

@@ -23,11 +23,11 @@ services:
ports: ports:
5005/tcp: 5005 5005/tcp: 5005
10000/tcp: 10000 10000/tcp: 10000
8127/tcp: 8127
webui: "http://[HOST]:[PORT:8127]/" webui: "http://[HOST]:[PORT:8127]/"
watchdog: "http://[HOST]:[PORT:8127]/-/healthy" watchdog: "http://[HOST]:[PORT:8127]/-/healthy"
ingress: true ingress: true
ingress_port: 8127 ingress_port: 8127
panel_icon: "mdi:application-cog-outline"
# Definition of parameters in the configuration tab of the addon # Definition of parameters in the configuration tab of the addon
# parameters are available within the container as /data/options.json # parameters are available within the container as /data/options.json