Rename the Python package to daynivo_kiosk
CI / test-bookworm (push) Successful in 29s
CI / test-latest (push) Successful in 33s

src/voxip_kiosk -> src/daynivo_kiosk, with every import, the launchers,
install.sh, the Makefile and the manager's gunicorn app path. An upgrade
replaces /usr/lib/voxip-kiosk/python as a whole, so the old package
disappears; tested by upgrading an installation of the previous commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rothmanandClaude Opus 5.5 committed 2026-11-05 23:52:39 +01:00
1 parent d0f3206ff4
commit 6733aacb6e
62 files changed
+43 -43

No files matched your search

+1 -1
View File
@@ -30,7 +30,7 @@ dev:
test -f $(DEV)/etc/config.json || cp config/config.default.json $(DEV)/etc/config.json test -f $(DEV)/etc/config.json || cp config/config.default.json $(DEV)/etc/config.json
cp VERSION $(DEV)/share/VERSION cp VERSION $(DEV)/share/VERSION
@echo "Setupcode: zie $(DEV)/etc/setup-code (wordt aangemaakt bij de start)" @echo "Setupcode: zie $(DEV)/etc/setup-code (wordt aangemaakt bij de start)"
$(DEV_ENV) $(PY) -m flask --app 'voxip_kiosk.web:create_app()' run --host 127.0.0.1 --port 8080 $(DEV_ENV) $(PY) -m flask --app 'daynivo_kiosk.web:create_app()' run --host 127.0.0.1 --port 8080
image: image:
./image/build.sh ./image/build.sh
+1 -1
View File
@@ -4,6 +4,6 @@ import sys
sys.path.insert(0, "/usr/lib/voxip-kiosk/python") sys.path.insert(0, "/usr/lib/voxip-kiosk/python")
from voxip_kiosk.ctl import main # noqa: E402 from daynivo_kiosk.ctl import main # noqa: E402
sys.exit(main()) sys.exit(main())
+1 -1
View File
@@ -4,6 +4,6 @@ import sys
sys.path.insert(0, "/usr/lib/voxip-kiosk/python") sys.path.insert(0, "/usr/lib/voxip-kiosk/python")
from voxip_kiosk.agent import main # noqa: E402 from daynivo_kiosk.agent import main # noqa: E402
sys.exit(main()) sys.exit(main())
+1 -1
View File
@@ -4,6 +4,6 @@ import sys
sys.path.insert(0, "/usr/lib/voxip-kiosk/python") sys.path.insert(0, "/usr/lib/voxip-kiosk/python")
from voxip_kiosk.browser import main # noqa: E402 from daynivo_kiosk.browser import main # noqa: E402
sys.exit(main()) sys.exit(main())
+1 -1
View File
@@ -4,6 +4,6 @@ import sys
sys.path.insert(0, "/usr/lib/voxip-kiosk/python") sys.path.insert(0, "/usr/lib/voxip-kiosk/python")
from voxip_kiosk.healthcheck import main # noqa: E402 from daynivo_kiosk.healthcheck import main # noqa: E402
sys.exit(main()) sys.exit(main())
+1 -1
View File
@@ -4,6 +4,6 @@ import sys
sys.path.insert(0, "/usr/lib/voxip-kiosk/python") sys.path.insert(0, "/usr/lib/voxip-kiosk/python")
from voxip_kiosk.helper import main # noqa: E402 from daynivo_kiosk.helper import main # noqa: E402
sys.exit(main()) sys.exit(main())
+1 -1
View File
@@ -4,6 +4,6 @@ import sys
sys.path.insert(0, "/usr/lib/voxip-kiosk/python") sys.path.insert(0, "/usr/lib/voxip-kiosk/python")
from voxip_kiosk.manager import main # noqa: E402 from daynivo_kiosk.manager import main # noqa: E402
sys.exit(main()) sys.exit(main())
+1 -1
View File
@@ -4,6 +4,6 @@ import sys
sys.path.insert(0, "/usr/lib/voxip-kiosk/python") sys.path.insert(0, "/usr/lib/voxip-kiosk/python")
from voxip_kiosk.updater import main # noqa: E402 from daynivo_kiosk.updater import main # noqa: E402
sys.exit(main()) sys.exit(main())
+1 -1
View File
@@ -180,7 +180,7 @@ daynivo-kiosk-os/
├── update.sh update met backup van configuratie ├── update.sh update met backup van configuratie
├── uninstall.sh verwijderen (--purge voor alles) ├── uninstall.sh verwijderen (--purge voor alles)
├── bin/ dunne launchers → /usr/lib/voxip-kiosk/ ├── bin/ dunne launchers → /usr/lib/voxip-kiosk/
├── src/voxip_kiosk/ Python-package (alle logica) ├── src/daynivo_kiosk/ Python-package (alle logica)
│ ├── config.py laden/valideren/atomair opslaan │ ├── config.py laden/valideren/atomair opslaan
│ ├── validation.py gedeelde invoervalidatie │ ├── validation.py gedeelde invoervalidatie
│ ├── cdp.py Chrome DevTools Protocol-client │ ├── cdp.py Chrome DevTools Protocol-client
+1 -1
View File
@@ -72,7 +72,7 @@ VOXIP_DEFAULT_URL=$(printf %q "$VOXIP_DEFAULT_URL")
VOXIP_DEVICE_NAME=$(printf %q "$VOXIP_DEVICE_NAME") VOXIP_DEVICE_NAME=$(printf %q "$VOXIP_DEVICE_NAME")
EOF EOF
cat > "$PAYLOAD/BUILD-INFO" <<EOF cat > "$PAYLOAD/BUILD-INFO" <<EOF
voxip_kiosk_os=$VERSION daynivo_kiosk_os=$VERSION
source_revision=$SOURCE_REV source_revision=$SOURCE_REV
pi_gen_ref=$PI_GEN_REF pi_gen_ref=$PI_GEN_REF
pi_gen_commit=$PI_GEN_COMMIT pi_gen_commit=$PI_GEN_COMMIT
+4 -4
View File
@@ -54,7 +54,7 @@ while [[ $# -gt 0 ]]; do
done done
[[ $EUID -eq 0 ]] || die "Voer dit script uit met sudo." [[ $EUID -eq 0 ]] || die "Voer dit script uit met sudo."
[[ -f "$SRC/src/voxip_kiosk/config.py" ]] || die "Start install.sh vanuit de Daynivo Kiosk OS-repository." [[ -f "$SRC/src/daynivo_kiosk/config.py" ]] || die "Start install.sh vanuit de Daynivo Kiosk OS-repository."
in_chroot() { in_chroot() {
if command -v systemd-detect-virt >/dev/null 2>&1 && systemd-detect-virt --chroot --quiet; then if command -v systemd-detect-virt >/dev/null 2>&1 && systemd-detect-virt --chroot --quiet; then
@@ -126,7 +126,7 @@ say "Programmabestanden installeren"
install -d -m 0755 "$LIB" "$SHARE" "$DOC" install -d -m 0755 "$LIB" "$SHARE" "$DOC"
rm -rf "$LIB/python.new" rm -rf "$LIB/python.new"
install -d -m 0755 "$LIB/python.new" install -d -m 0755 "$LIB/python.new"
tar -C "$SRC/src" --exclude='__pycache__' --exclude='*.pyc' -cf - voxip_kiosk | tar -C "$LIB/python.new" -xf - tar -C "$SRC/src" --exclude='__pycache__' --exclude='*.pyc' -cf - daynivo_kiosk | tar -C "$LIB/python.new" -xf -
chown -R root:root "$LIB/python.new" chown -R root:root "$LIB/python.new"
chmod -R u=rwX,go=rX "$LIB/python.new" chmod -R u=rwX,go=rX "$LIB/python.new"
python3 -m compileall -q "$LIB/python.new" >/dev/null python3 -m compileall -q "$LIB/python.new" >/dev/null
@@ -172,7 +172,7 @@ PYRUN=(python3 -I -c)
"${PYRUN[@]}" ' "${PYRUN[@]}" '
import json, os, sys import json, os, sys
sys.path.insert(0, "/usr/lib/voxip-kiosk/python") sys.path.insert(0, "/usr/lib/voxip-kiosk/python")
from voxip_kiosk import config as c from daynivo_kiosk import config as c
path, default, url, name = sys.argv[1:5] path, default, url, name = sys.argv[1:5]
updates = {} updates = {}
if url: updates["url"] = url if url: updates["url"] = url
@@ -220,7 +220,7 @@ for dir in /etc/chromium/policies/managed /etc/chromium-browser/policies/managed
install -D -m 0644 "$SRC/config/chromium/voxip-kiosk.json" "$dir/voxip-kiosk.json" install -D -m 0644 "$SRC/config/chromium/voxip-kiosk.json" "$dir/voxip-kiosk.json"
done done
ADMIN_PORT="$(python3 -I -c 'import sys; sys.path.insert(0, "/usr/lib/voxip-kiosk/python"); from voxip_kiosk.config import load_config; print(load_config(__import__("pathlib").Path(sys.argv[1]))["admin_port"])' "$ETC/config.json")" ADMIN_PORT="$(python3 -I -c 'import sys; sys.path.insert(0, "/usr/lib/voxip-kiosk/python"); from daynivo_kiosk.config import load_config; print(load_config(__import__("pathlib").Path(sys.argv[1]))["admin_port"])' "$ETC/config.json")"
install -d -m 0755 /etc/avahi/services install -d -m 0755 /etc/avahi/services
sed "s#<port>8080</port>#<port>${ADMIN_PORT}</port>#" "$SRC/config/avahi-voxip.service" > /etc/avahi/services/voxip-kiosk.service sed "s#<port>8080</port>#<port>${ADMIN_PORT}</port>#" "$SRC/config/avahi-voxip.service" > /etc/avahi/services/voxip-kiosk.service
chmod 0644 /etc/avahi/services/voxip-kiosk.service chmod 0644 /etc/avahi/services/voxip-kiosk.service
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -55,7 +55,7 @@ def gunicorn_argv(paths: Paths, config: dict) -> list[str]:
if config["admin_https"]: if config["admin_https"]:
cert, key = ensure_certificate(paths) cert, key = ensure_certificate(paths)
argv += ["--certfile", str(cert), "--keyfile", str(key)] argv += ["--certfile", str(cert), "--keyfile", str(key)]
argv.append("voxip_kiosk.web:create_app()") argv.append("daynivo_kiosk.web:create_app()")
return argv return argv
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

File renamed without changes.
+5 -5
View File
@@ -4,7 +4,7 @@ from pathlib import Path
import pytest import pytest
from voxip_kiosk.paths import Paths from daynivo_kiosk.paths import Paths
ROOT = Path(__file__).resolve().parents[1] ROOT = Path(__file__).resolve().parents[1]
@@ -39,7 +39,7 @@ class FakeHelper:
self.responses = {} self.responses = {}
def call(self, verb, *args, payload=None, timeout=60): def call(self, verb, *args, payload=None, timeout=60):
from voxip_kiosk.helper_client import HelperError from daynivo_kiosk.helper_client import HelperError
self.calls.append((verb, args, payload)) self.calls.append((verb, args, payload))
if self.fail: if self.fail:
@@ -53,7 +53,7 @@ class FakeCDP:
self.fail = None self.fail = None
def _do(self, name, *args): def _do(self, name, *args):
from voxip_kiosk.cdp import CDPError from daynivo_kiosk.cdp import CDPError
self.calls.append((name, args)) self.calls.append((name, args))
if self.fail: if self.fail:
@@ -80,7 +80,7 @@ def fake_cdp():
@pytest.fixture @pytest.fixture
def quiet_system(monkeypatch): def quiet_system(monkeypatch):
"""Keep the web tests independent of the machine they run on.""" """Keep the web tests independent of the machine they run on."""
from voxip_kiosk import netinfo, services, sysinfo from daynivo_kiosk import netinfo, services, sysinfo
monkeypatch.setattr(services, "summary", lambda: { monkeypatch.setattr(services, "summary", lambda: {
"browser": {"unit": services.BROWSER_UNIT, "status": "ok", "label": "Actief", "restarts": "2", "since": ""}, "browser": {"unit": services.BROWSER_UNIT, "status": "ok", "label": "Actief", "restarts": "2", "since": ""},
@@ -106,7 +106,7 @@ def quiet_system(monkeypatch):
@pytest.fixture @pytest.fixture
def app(paths, fake_helper, fake_cdp, quiet_system): def app(paths, fake_helper, fake_cdp, quiet_system):
from voxip_kiosk.web import create_app from daynivo_kiosk.web import create_app
application = create_app(paths, helper=fake_helper, cdp=fake_cdp) application = create_app(paths, helper=fake_helper, cdp=fake_cdp)
application.config["TESTING"] = True application.config["TESTING"] = True
+3 -3
View File
@@ -2,9 +2,9 @@ import json
import pytest import pytest
from voxip_kiosk.agent import Agent, HUNG_RELOAD_AFTER, HUNG_RESTART_AFTER from daynivo_kiosk.agent import Agent, HUNG_RELOAD_AFTER, HUNG_RESTART_AFTER
from voxip_kiosk.cdp import CDPError from daynivo_kiosk.cdp import CDPError
from voxip_kiosk.config import save_config from daynivo_kiosk.config import save_config
class Clock: class Clock:
+2 -2
View File
@@ -2,8 +2,8 @@ import json
from pathlib import Path from pathlib import Path
from urllib.parse import parse_qs, urlsplit from urllib.parse import parse_qs, urlsplit
from voxip_kiosk import browser as b from daynivo_kiosk import browser as b
from voxip_kiosk.config import DEFAULTS from daynivo_kiosk.config import DEFAULTS
XRANDR = """Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 7680 x 7680 XRANDR = """Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 7680 x 7680
HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
+1 -1
View File
@@ -4,7 +4,7 @@ import stat
import pytest import pytest
from voxip_kiosk import config as c from daynivo_kiosk import config as c
def test_default_file_matches_defaults(paths): def test_default_file_matches_defaults(paths):
+4 -4
View File
@@ -1,9 +1,9 @@
import pytest import pytest
from voxip_kiosk import services from daynivo_kiosk import services
from voxip_kiosk.cdp import CDPError from daynivo_kiosk.cdp import CDPError
from voxip_kiosk.config import save_config from daynivo_kiosk.config import save_config
from voxip_kiosk.healthcheck import CDP_FAILURES_BEFORE_RESTART, DISPLAY_RETRY_AFTER, HealthCheck from daynivo_kiosk.healthcheck import CDP_FAILURES_BEFORE_RESTART, DISPLAY_RETRY_AFTER, HealthCheck
class World: class World:
+2 -2
View File
@@ -3,8 +3,8 @@ import subprocess
import pytest import pytest
from voxip_kiosk import helper as h from daynivo_kiosk import helper as h
from voxip_kiosk.config import load_config from daynivo_kiosk.config import load_config
class Recorder: class Recorder:
+2 -2
View File
@@ -1,7 +1,7 @@
import pytest import pytest
from voxip_kiosk import netconfig as n from daynivo_kiosk import netconfig as n
from voxip_kiosk.validation import ValidationError from daynivo_kiosk.validation import ValidationError
def test_validate_static_ethernet(): def test_validate_static_ethernet():
+1 -1
View File
@@ -1,4 +1,4 @@
from voxip_kiosk import services, sysinfo from daynivo_kiosk import services, sysinfo
def test_parse_throttled(): def test_parse_throttled():
+2 -2
View File
@@ -6,8 +6,8 @@ import tarfile
import pytest import pytest
from voxip_kiosk import updater as u from daynivo_kiosk import updater as u
from voxip_kiosk.config import save_config from daynivo_kiosk.config import save_config
API = u.RELEASE_API API = u.RELEASE_API
BASE = "https://git.example.nl/rothman/daynivo-kiosk-os/releases/download" BASE = "https://git.example.nl/rothman/daynivo-kiosk-os/releases/download"
+1 -1
View File
@@ -1,6 +1,6 @@
import pytest import pytest
from voxip_kiosk import validation as v from daynivo_kiosk import validation as v
@pytest.mark.parametrize("url", [ @pytest.mark.parametrize("url", [
+5 -5
View File
@@ -2,8 +2,8 @@ import json
import pytest import pytest
from voxip_kiosk.config import load_config from daynivo_kiosk.config import load_config
from voxip_kiosk.web import auth from daynivo_kiosk.web import auth
from .conftest import PASSWORD, csrf_from, token from .conftest import PASSWORD, csrf_from, token
@@ -113,7 +113,7 @@ def test_password_change_invalidates_other_sessions(app, logged_in):
def test_idle_session_expires(app, logged_in, monkeypatch): def test_idle_session_expires(app, logged_in, monkeypatch):
from voxip_kiosk.web import views from daynivo_kiosk.web import views
real = views.time.time real = views.time.time
monkeypatch.setattr(views.time, "time", lambda: real() + views.IDLE_TIMEOUT + 5) monkeypatch.setattr(views.time, "time", lambda: real() + views.IDLE_TIMEOUT + 5)
@@ -141,7 +141,7 @@ def test_public_clients_blocked(client, addr, allowed):
def test_same_subnet_global_ipv6_allowed(): def test_same_subnet_global_ipv6_allowed():
from voxip_kiosk.web.security import client_allowed from daynivo_kiosk.web.security import client_allowed
assert client_allowed("2a02:a210:1:2::99", False, ["2a02:a210:1:2::5/64"]) assert client_allowed("2a02:a210:1:2::99", False, ["2a02:a210:1:2::5/64"])
assert not client_allowed("2a02:a210:9:9::99", False, ["2a02:a210:1:2::5/64"]) assert not client_allowed("2a02:a210:9:9::99", False, ["2a02:a210:1:2::5/64"])
@@ -180,7 +180,7 @@ def test_pages_render(logged_in, path):
def test_dashboard_masks_token(logged_in, paths): def test_dashboard_masks_token(logged_in, paths):
from voxip_kiosk.config import save_config from daynivo_kiosk.config import save_config
save_config(paths.config_file, {"url": "https://portal.example.nl/display/hal?token=supergeheimtoken99"}) save_config(paths.config_file, {"url": "https://portal.example.nl/display/hal?token=supergeheimtoken99"})
body = logged_in.get("/").get_data(as_text=True) body = logged_in.get("/").get_data(as_text=True)