fix: main UI fixes

This commit is contained in:
Ida 2026-05-14 10:39:53 +02:00
parent 76043a6c02
commit 41a6b9759c
2 changed files with 364 additions and 13 deletions

View file

@ -3383,6 +3383,116 @@
"key": "Warnschwelle",
"value": ""
},
{
"context": "ui",
"key": "Ansicht an Fenster anpassen",
"value": ""
},
{
"context": "ui",
"key": "Ansicht zurücksetzen",
"value": ""
},
{
"context": "ui",
"key": "Auswahl löschen",
"value": ""
},
{
"context": "ui",
"key": "Canvas bearbeiten",
"value": ""
},
{
"context": "ui",
"key": "Klicken Sie auf einen Ausgang, dann auf einen Eingang",
"value": ""
},
{
"context": "ui",
"key": "Klicken Sie auf einen Eingang, um die Verbindung zu erstellen",
"value": ""
},
{
"context": "ui",
"key": "Kommentar (optional)",
"value": ""
},
{
"context": "ui",
"key": "Kommentar bearbeiten",
"value": ""
},
{
"context": "ui",
"key": "Knoten duplizieren",
"value": ""
},
{
"context": "ui",
"key": "Rückgängig",
"value": ""
},
{
"context": "ui",
"key": "Verbindungen zeichnen",
"value": ""
},
{
"context": "ui",
"key": "Vergrößern",
"value": ""
},
{
"context": "ui",
"key": "Verkleinern",
"value": ""
},
{
"context": "ui",
"key": "Wiederholen",
"value": ""
},
{
"context": "ui",
"key": "Zoom-Voreinstellungen",
"value": ""
},
{
"context": "ui",
"key": "Zoomstufe (Prozent)",
"value": ""
},
{
"context": "ui",
"key": "Doppelklick zum Bearbeiten",
"value": ""
},
{
"context": "ui",
"key": "Kommentar auf dem Canvas einfügen",
"value": ""
},
{
"context": "ui",
"key": "Kommentar eingeben …",
"value": ""
},
{
"context": "ui",
"key": "Canvas-Notiz verschieben",
"value": ""
},
{
"context": "ui",
"key": "Notizfarbe",
"value": ""
},
{
"context": "ui",
"key": "Notizgröße ändern",
"value": ""
},
{
"context": "ui",
"key": "✓ Mandat eingereicht",
@ -6776,6 +6886,116 @@
"key": "Warnschwelle",
"value": "Warnschwelle"
},
{
"context": "ui",
"key": "Ansicht an Fenster anpassen",
"value": "Ansicht an Fenster anpassen"
},
{
"context": "ui",
"key": "Ansicht zurücksetzen",
"value": "Ansicht zurücksetzen"
},
{
"context": "ui",
"key": "Auswahl löschen",
"value": "Auswahl löschen"
},
{
"context": "ui",
"key": "Canvas bearbeiten",
"value": "Canvas bearbeiten"
},
{
"context": "ui",
"key": "Klicken Sie auf einen Ausgang, dann auf einen Eingang",
"value": "Klicken Sie auf einen Ausgang, dann auf einen Eingang"
},
{
"context": "ui",
"key": "Klicken Sie auf einen Eingang, um die Verbindung zu erstellen",
"value": "Klicken Sie auf einen Eingang, um die Verbindung zu erstellen"
},
{
"context": "ui",
"key": "Kommentar (optional)",
"value": "Kommentar (optional)"
},
{
"context": "ui",
"key": "Kommentar bearbeiten",
"value": "Kommentar bearbeiten"
},
{
"context": "ui",
"key": "Knoten duplizieren",
"value": "Knoten duplizieren"
},
{
"context": "ui",
"key": "Rückgängig",
"value": "Rückgängig"
},
{
"context": "ui",
"key": "Verbindungen zeichnen",
"value": "Verbindungen zeichnen"
},
{
"context": "ui",
"key": "Vergrößern",
"value": "Vergrößern"
},
{
"context": "ui",
"key": "Verkleinern",
"value": "Verkleinern"
},
{
"context": "ui",
"key": "Wiederholen",
"value": "Wiederholen"
},
{
"context": "ui",
"key": "Zoom-Voreinstellungen",
"value": "Zoom-Voreinstellungen"
},
{
"context": "ui",
"key": "Zoomstufe (Prozent)",
"value": "Zoomstufe (Prozent)"
},
{
"context": "ui",
"key": "Doppelklick zum Bearbeiten",
"value": "Doppelklick zum Bearbeiten"
},
{
"context": "ui",
"key": "Kommentar auf dem Canvas einfügen",
"value": "Kommentar auf dem Canvas einfügen"
},
{
"context": "ui",
"key": "Kommentar eingeben …",
"value": "Kommentar eingeben …"
},
{
"context": "ui",
"key": "Canvas-Notiz verschieben",
"value": "Zum Verschieben greifen"
},
{
"context": "ui",
"key": "Notizfarbe",
"value": "Notizfarbe"
},
{
"context": "ui",
"key": "Notizgröße ändern",
"value": "Notizgröße ändern"
},
{
"context": "ui",
"key": "✓ Mandat eingereicht",
@ -9994,6 +10214,116 @@
"key": "Warnschwelle",
"value": "Warning threshold"
},
{
"context": "ui",
"key": "Ansicht an Fenster anpassen",
"value": "Fit to window"
},
{
"context": "ui",
"key": "Ansicht zurücksetzen",
"value": "Reset view"
},
{
"context": "ui",
"key": "Auswahl löschen",
"value": "Delete selection"
},
{
"context": "ui",
"key": "Canvas bearbeiten",
"value": "Edit canvas"
},
{
"context": "ui",
"key": "Klicken Sie auf einen Ausgang, dann auf einen Eingang",
"value": "Click an output, then an input"
},
{
"context": "ui",
"key": "Klicken Sie auf einen Eingang, um die Verbindung zu erstellen",
"value": "Click an input to create the connection"
},
{
"context": "ui",
"key": "Kommentar (optional)",
"value": "Comment (optional)"
},
{
"context": "ui",
"key": "Kommentar bearbeiten",
"value": "Edit comment"
},
{
"context": "ui",
"key": "Knoten duplizieren",
"value": "Duplicate node"
},
{
"context": "ui",
"key": "Rückgängig",
"value": "Undo"
},
{
"context": "ui",
"key": "Verbindungen zeichnen",
"value": "Draw connections"
},
{
"context": "ui",
"key": "Vergrößern",
"value": "Zoom in"
},
{
"context": "ui",
"key": "Verkleinern",
"value": "Zoom out"
},
{
"context": "ui",
"key": "Wiederholen",
"value": "Redo"
},
{
"context": "ui",
"key": "Zoom-Voreinstellungen",
"value": "Zoom presets"
},
{
"context": "ui",
"key": "Zoomstufe (Prozent)",
"value": "Zoom level (percent)"
},
{
"context": "ui",
"key": "Doppelklick zum Bearbeiten",
"value": "Double-click to edit"
},
{
"context": "ui",
"key": "Kommentar auf dem Canvas einfügen",
"value": "Add comment on canvas"
},
{
"context": "ui",
"key": "Kommentar eingeben …",
"value": "Enter a comment…"
},
{
"context": "ui",
"key": "Canvas-Notiz verschieben",
"value": "Drag to move note"
},
{
"context": "ui",
"key": "Notizfarbe",
"value": "Note color"
},
{
"context": "ui",
"key": "Notizgröße ändern",
"value": "Resize note"
},
{
"context": "ui",
"key": "✓ Mandat eingereicht",

View file

@ -58,14 +58,32 @@ def _getUserMandateIds(userId: str) -> list[str]:
def _getAdminMandateIds(userId: str, mandateIds: list) -> list:
"""Batch-check which mandates the user is admin for (2 SQL queries total)."""
"""Batch-check which mandates the user is admin for (UserMandate → UserMandateRole → Role)."""
if not mandateIds:
return []
rootIface = getRootInterface()
from modules.datamodels.datamodelMembership import UserMandateRole
allRoles = rootIface.db.getRecordset(UserMandateRole, recordFilter={
"userId": userId, "mandateId": mandateIds,
})
from modules.datamodels.datamodelMembership import UserMandate, UserMandateRole
memberships = rootIface.db.getRecordset(
UserMandate,
recordFilter={"userId": userId, "mandateId": mandateIds, "enabled": True},
)
if not memberships:
return []
umIdToMandateId: dict[str, str] = {}
for m in memberships:
row = m if isinstance(m, dict) else m.__dict__
um_id = row.get("id")
mid = row.get("mandateId")
if um_id and mid:
umIdToMandateId[str(um_id)] = str(mid)
userMandateIds = list(umIdToMandateId.keys())
allRoles = rootIface.db.getRecordset(
UserMandateRole,
recordFilter={"userMandateId": userMandateIds},
)
if not allRoles:
return []
@ -74,23 +92,26 @@ def _getAdminMandateIds(userId: str, mandateIds: list) -> list:
for r in allRoles:
row = r if isinstance(r, dict) else r.__dict__
rid = row.get("roleId")
mid = row.get("mandateId")
if rid:
um_id = row.get("userMandateId")
mid = umIdToMandateId.get(str(um_id)) if um_id else None
if rid and mid:
roleIds.add(rid)
roleToMandate.setdefault(rid, set()).add(mid)
if not roleIds:
return []
from modules.datamodels.datamodelRbac import MandateRole
roleRecords = rootIface.db.getRecordset(MandateRole, recordFilter={"id": list(roleIds)})
from modules.datamodels.datamodelRbac import Role
roleRecords = rootIface.db.getRecordset(Role, recordFilter={"id": list(roleIds)})
adminMandates: set = set()
for role in (roleRecords or []):
row = role if isinstance(role, dict) else role.__dict__
if row.get("isAdmin"):
rid = row.get("id")
if rid and rid in roleToMandate:
adminMandates.update(roleToMandate[rid])
rid = row.get("id")
if not rid or rid not in roleToMandate:
continue
# Same rule as routeBilling._isAdminOfMandate / notifyMandateAdmins
if row.get("roleLabel") == "admin" and not row.get("featureInstanceId"):
adminMandates.update(roleToMandate[rid])
return [mid for mid in mandateIds if mid in adminMandates]