Banner: Einzahl, wo eines gemeint ist
"1 Clients online" liest man jeden Tag einmal zu oft. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+16
-4
@@ -63,6 +63,11 @@ DASHBOARD_COUNT_SQL = """
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def _zahl(anzahl: int, singular: str, plural: str) -> str:
|
||||||
|
"""Zahl mit passendem Wort. "1 Clients" liest man jeden Tag einmal zu oft."""
|
||||||
|
return f"{BOLD}{anzahl}{RESET} {singular if anzahl == 1 else plural}"
|
||||||
|
|
||||||
|
|
||||||
def _oeffnen(root: Path) -> sqlite3.Connection:
|
def _oeffnen(root: Path) -> sqlite3.Connection:
|
||||||
pfad = root / "data" / "app.db"
|
pfad = root / "data" / "app.db"
|
||||||
conn = sqlite3.connect(f"file:{pfad.as_posix()}?mode=ro", uri=True, timeout=1.0)
|
conn = sqlite3.connect(f"file:{pfad.as_posix()}?mode=ro", uri=True, timeout=1.0)
|
||||||
@@ -74,12 +79,15 @@ def _flotte(conn: sqlite3.Connection) -> str:
|
|||||||
row = conn.execute(DASHBOARD_COUNT_SQL).fetchone()
|
row = conn.execute(DASHBOARD_COUNT_SQL).fetchone()
|
||||||
online = int(row["online"] or 0)
|
online = int(row["online"] or 0)
|
||||||
offline = int(row["offline"] or 0)
|
offline = int(row["offline"] or 0)
|
||||||
teile = [f"{BOLD}{online}{RESET} Clients online", f"{BOLD}{offline}{RESET} nicht erreichbar"]
|
teile = [
|
||||||
|
_zahl(online, "Client online", "Clients online"),
|
||||||
|
f"{BOLD}{offline}{RESET} nicht erreichbar",
|
||||||
|
]
|
||||||
# Nur nennen, wenn es sie gibt: eine Null bei "startet neu" ist keine
|
# Nur nennen, wenn es sie gibt: eine Null bei "startet neu" ist keine
|
||||||
# Auskunft, sondern Fuellmaterial.
|
# Auskunft, sondern Fuellmaterial.
|
||||||
restarting = int(row["restarting"] or 0)
|
restarting = int(row["restarting"] or 0)
|
||||||
if restarting:
|
if restarting:
|
||||||
teile.append(f"{BOLD}{restarting}{RESET} startet neu")
|
teile.append(_zahl(restarting, "startet neu", "starten neu"))
|
||||||
unbekannt = int(row["unknown"] or 0)
|
unbekannt = int(row["unknown"] or 0)
|
||||||
if unbekannt:
|
if unbekannt:
|
||||||
teile.append(f"{DIM}{unbekannt} ohne Pruefung{RESET}")
|
teile.append(f"{DIM}{unbekannt} ohne Pruefung{RESET}")
|
||||||
@@ -116,7 +124,7 @@ def _dhcp() -> str:
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
continue
|
continue
|
||||||
aktiv = sum(1 for ablauf, zustand in letzte.values() if zustand == "0" and ablauf > jetzt)
|
aktiv = sum(1 for ablauf, zustand in letzte.values() if zustand == "0" and ablauf > jetzt)
|
||||||
return f"{aktiv} Leases aktiv"
|
return f"{aktiv} {'Lease' if aktiv == 1 else 'Leases'} aktiv"
|
||||||
|
|
||||||
|
|
||||||
def _lizenzen(conn: sqlite3.Connection) -> str:
|
def _lizenzen(conn: sqlite3.Connection) -> str:
|
||||||
@@ -127,7 +135,11 @@ def _lizenzen(conn: sqlite3.Connection) -> str:
|
|||||||
).fetchone()[0]
|
).fetchone()[0]
|
||||||
or 0
|
or 0
|
||||||
)
|
)
|
||||||
return f"{BOLD}{kunden}{RESET} Kunden · {BOLD}{lizenzen}{RESET} Lizenzen ausgestellt"
|
return (
|
||||||
|
_zahl(kunden, "Kunde", "Kunden")
|
||||||
|
+ " · "
|
||||||
|
+ _zahl(lizenzen, "Lizenz ausgestellt", "Lizenzen ausgestellt")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def main(argv: list[str] | None = None) -> int:
|
def main(argv: list[str] | None = None) -> int:
|
||||||
|
|||||||
Reference in New Issue
Block a user