diff --git a/backend/locale/en/LC_MESSAGES/django.mo b/backend/locale/en/LC_MESSAGES/django.mo index 163b675..48580ec 100644 Binary files a/backend/locale/en/LC_MESSAGES/django.mo and b/backend/locale/en/LC_MESSAGES/django.mo differ diff --git a/backend/locale/en/LC_MESSAGES/django.po b/backend/locale/en/LC_MESSAGES/django.po index eb6e042..a510bc3 100644 --- a/backend/locale/en/LC_MESSAGES/django.po +++ b/backend/locale/en/LC_MESSAGES/django.po @@ -2,187 +2,260 @@ msgid "" msgstr "" "Project-Id-Version: tubco-portal\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-24 15:40+0000\n" +"POT-Creation-Date: 2026-03-25 19:40+0000\n" "PO-Revision-Date: 2026-03-24 00:00+0000\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: workflows/templates/registration/login.html:7 -#: workflows/templates/registration/login.html:28 +#: workflows/models.py:55 +msgid "Eingereicht" +msgstr "Submitted" + +#: workflows/models.py:56 +msgid "In Bearbeitung" +msgstr "Processing" + +#: workflows/models.py:57 +#, fuzzy +msgid "Abgeschlossen" +msgstr "Completed" + +#: workflows/models.py:58 workflows/templates/workflows/welcome_emails.html:112 +msgid "Fehlgeschlagen" +msgstr "Failed" + +#: workflows/templates/registration/login.html:4 +#: workflows/templates/registration/login.html:19 msgid "Anmeldung" msgstr "Sign in" -#: workflows/templates/registration/login.html:29 +#: workflows/templates/registration/login.html:20 msgid "Bitte melden Sie sich mit Ihrem Benutzerkonto an." msgstr "Please sign in with your user account." -#: workflows/templates/registration/login.html:34 +#: workflows/templates/registration/login.html:25 msgid "Anmeldung fehlgeschlagen. Bitte Zugangsdaten prüfen." msgstr "Login failed. Please check your credentials." -#: workflows/templates/registration/login.html:38 +#: workflows/templates/registration/login.html:29 msgid "Anmelden" msgstr "Sign in" -#: workflows/templates/workflows/form_builder.html:7 -#: workflows/templates/workflows/form_builder.html:19 -#: workflows/templates/workflows/home.html:553 +#: workflows/templates/workflows/audit_log.html:4 +#: workflows/templates/workflows/audit_log.html:15 +#: workflows/templates/workflows/home.html:134 +msgid "Audit Log" +msgstr "" + +#: workflows/templates/workflows/audit_log.html:16 +msgid "Nachvollziehbarkeit aller wichtigen Admin-Aktionen im Portal." +msgstr "" + +#: workflows/templates/workflows/audit_log.html:23 +#: workflows/templates/workflows/audit_log.html:54 +#: workflows/templates/workflows/requests_dashboard.html:163 +#: workflows/templates/workflows/welcome_emails.html:91 +msgid "Aktion" +msgstr "Action" + +#: workflows/templates/workflows/audit_log.html:25 +msgid "Alle" +msgstr "" + +#: workflows/templates/workflows/audit_log.html:32 +#: workflows/templates/workflows/audit_log.html:53 +msgid "Nutzer" +msgstr "" + +#: workflows/templates/workflows/audit_log.html:33 +#, fuzzy +#| msgid "Mitarbeitende suchen (Name oder E-Mail)" +msgid "Name, Benutzername oder E-Mail" +msgstr "Search employees (name or email)" + +#: workflows/templates/workflows/audit_log.html:36 +msgid "Von Datum" +msgstr "" + +#: workflows/templates/workflows/audit_log.html:40 +msgid "Bis Datum" +msgstr "" + +#: workflows/templates/workflows/audit_log.html:44 +msgid "Filtern" +msgstr "" + +#: workflows/templates/workflows/audit_log.html:45 +#: workflows/templates/workflows/requests_dashboard.html:133 +msgid "Zurücksetzen" +msgstr "Reset" + +#: workflows/templates/workflows/audit_log.html:52 +msgid "Zeit" +msgstr "" + +#: workflows/templates/workflows/audit_log.html:55 +#: workflows/templates/workflows/requests_dashboard.html:157 +msgid "Typ" +msgstr "Type" + +#: workflows/templates/workflows/audit_log.html:56 +msgid "Ziel" +msgstr "" + +#: workflows/templates/workflows/audit_log.html:57 +msgid "Details" +msgstr "" + +#: workflows/templates/workflows/audit_log.html:81 +#, fuzzy +#| msgid "Noch keine Vorgänge vorhanden." +msgid "Noch keine Audit-Einträge vorhanden." +msgstr "No requests available yet." + +#: workflows/templates/workflows/form_builder.html:4 +#: workflows/templates/workflows/form_builder.html:14 +#: workflows/templates/workflows/home.html:119 msgid "Form Builder" msgstr "Form Builder" #: workflows/templates/workflows/form_builder.html:15 -#: workflows/templates/workflows/integrations_setup.html:77 -#: workflows/templates/workflows/intro_builder.html:39 -#: workflows/templates/workflows/offboarding_form.html:30 -#: workflows/templates/workflows/onboarding_form.html:30 -#: workflows/templates/workflows/onboarding_intro_session.html:67 -#: workflows/templates/workflows/requests_dashboard.html:889 -#: workflows/templates/workflows/requests_dashboard.html:1119 -#: workflows/templates/workflows/welcome_emails.html:48 -msgid "Zur Startseite" -msgstr "Back to home" - -#: workflows/templates/workflows/form_builder.html:20 msgid "Felder per Drag-and-Drop sortieren und pro Schritt gruppieren." msgstr "Sort fields by drag and drop and group them by step." -#: workflows/templates/workflows/form_builder.html:38 +#: workflows/templates/workflows/form_builder.html:33 msgid "Reihenfolge speichern" msgstr "Save order" -#: workflows/templates/workflows/form_builder.html:55 +#: workflows/templates/workflows/form_builder.html:50 msgid "Fix" msgstr "Fixed" -#: workflows/templates/workflows/form_builder.html:56 +#: workflows/templates/workflows/form_builder.html:51 msgid "Ausgeblendet" msgstr "Hidden" -#: workflows/templates/workflows/form_builder.html:57 +#: workflows/templates/workflows/form_builder.html:52 msgid "Pflicht" msgstr "Required" -#: workflows/templates/workflows/form_builder.html:68 +#: workflows/templates/workflows/form_builder.html:63 msgid "Optionen verwalten" msgstr "Manage options" -#: workflows/templates/workflows/form_builder.html:71 +#: workflows/templates/workflows/form_builder.html:66 msgid "Kategorie" msgstr "Category" -#: workflows/templates/workflows/form_builder.html:84 -#: workflows/templates/workflows/form_builder.html:97 -#: workflows/templates/workflows/form_builder.html:142 +#: workflows/templates/workflows/form_builder.html:79 +#: workflows/templates/workflows/form_builder.html:92 +#: workflows/templates/workflows/form_builder.html:137 msgid "Label (DE)" msgstr "Label (DE)" -#: workflows/templates/workflows/form_builder.html:85 +#: workflows/templates/workflows/form_builder.html:80 msgid "Label (EN, optional)" msgstr "Label (EN, optional)" -#: workflows/templates/workflows/form_builder.html:86 +#: workflows/templates/workflows/form_builder.html:81 msgid "Technischer Wert (optional)" msgstr "Technical value (optional)" -#: workflows/templates/workflows/form_builder.html:87 +#: workflows/templates/workflows/form_builder.html:82 msgid "Option hinzufügen" msgstr "Add option" -#: workflows/templates/workflows/form_builder.html:96 -#: workflows/templates/workflows/intro_builder.html:90 +#: workflows/templates/workflows/form_builder.html:91 +#: workflows/templates/workflows/intro_builder.html:62 msgid "Sortierung" msgstr "Sort order" -#: workflows/templates/workflows/form_builder.html:98 -#: workflows/templates/workflows/form_builder.html:143 +#: workflows/templates/workflows/form_builder.html:93 +#: workflows/templates/workflows/form_builder.html:138 msgid "Label (EN)" msgstr "Label (EN)" -#: workflows/templates/workflows/form_builder.html:100 -#: workflows/templates/workflows/integrations_setup.html:290 -#: workflows/templates/workflows/intro_builder.html:97 +#: workflows/templates/workflows/form_builder.html:95 +#: workflows/templates/workflows/integrations_setup.html:225 +#: workflows/templates/workflows/intro_builder.html:69 msgid "Aktiv" msgstr "Active" -#: workflows/templates/workflows/form_builder.html:101 -#: workflows/templates/workflows/form_builder.html:116 -#: workflows/templates/workflows/integrations_setup.html:292 -#: workflows/templates/workflows/intro_builder.html:98 -#: workflows/templates/workflows/intro_builder.html:134 -#: workflows/templates/workflows/requests_dashboard.html:1102 -#: workflows/templates/workflows/welcome_emails.html:110 +#: workflows/templates/workflows/form_builder.html:96 +#: workflows/templates/workflows/form_builder.html:111 +#: workflows/templates/workflows/integrations_setup.html:227 +#: workflows/templates/workflows/intro_builder.html:70 +#: workflows/templates/workflows/intro_builder.html:106 +#: workflows/templates/workflows/requests_dashboard.html:247 +#: workflows/templates/workflows/welcome_emails.html:74 msgid "Löschen" msgstr "Delete" -#: workflows/templates/workflows/form_builder.html:109 +#: workflows/templates/workflows/form_builder.html:104 msgid "Ziehen zum Sortieren" msgstr "Drag to reorder" -#: workflows/templates/workflows/form_builder.html:116 +#: workflows/templates/workflows/form_builder.html:111 msgid "Option wirklich löschen?" msgstr "Delete this option?" -#: workflows/templates/workflows/form_builder.html:120 +#: workflows/templates/workflows/form_builder.html:115 msgid "Keine Optionen in dieser Kategorie." msgstr "No options in this category." -#: workflows/templates/workflows/form_builder.html:126 +#: workflows/templates/workflows/form_builder.html:121 msgid "Optionen speichern" msgstr "Save options" -#: workflows/templates/workflows/form_builder.html:133 +#: workflows/templates/workflows/form_builder.html:128 msgid "Feldtexte verwalten" msgstr "Manage field text" -#: workflows/templates/workflows/form_builder.html:141 +#: workflows/templates/workflows/form_builder.html:136 msgid "Feld" msgstr "Field" -#: workflows/templates/workflows/form_builder.html:144 +#: workflows/templates/workflows/form_builder.html:139 msgid "Hilfetext (DE)" msgstr "Help text (DE)" -#: workflows/templates/workflows/form_builder.html:145 +#: workflows/templates/workflows/form_builder.html:140 msgid "Hilfetext (EN)" msgstr "Help text (EN)" -#: workflows/templates/workflows/form_builder.html:155 +#: workflows/templates/workflows/form_builder.html:150 msgid "Fallback: Standardlabel" msgstr "Fallback: default label" -#: workflows/templates/workflows/form_builder.html:156 +#: workflows/templates/workflows/form_builder.html:151 msgid "English label" msgstr "English label" -#: workflows/templates/workflows/form_builder.html:157 +#: workflows/templates/workflows/form_builder.html:152 msgid "Optionaler Hilfetext" msgstr "Optional help text" -#: workflows/templates/workflows/form_builder.html:158 +#: workflows/templates/workflows/form_builder.html:153 msgid "Optional English help text" msgstr "Optional English help text" -#: workflows/templates/workflows/form_builder.html:161 +#: workflows/templates/workflows/form_builder.html:156 msgid "Keine Feldkonfigurationen verfügbar." msgstr "No field configurations available." -#: workflows/templates/workflows/form_builder.html:167 +#: workflows/templates/workflows/form_builder.html:162 msgid "Feldtexte speichern" msgstr "Save field text" -#: workflows/templates/workflows/handbook.html:7 -#: workflows/templates/workflows/handbook.html:31 -#: workflows/templates/workflows/home.html:563 +#: workflows/templates/workflows/handbook.html:4 +#: workflows/templates/workflows/handbook.html:15 +#: workflows/templates/workflows/home.html:129 msgid "Handbook" msgstr "Handbook" -#: workflows/templates/workflows/handbook.html:32 -msgid "Back to Home" -msgstr "Back to home" - -#: workflows/templates/workflows/handbook.html:34 +#: workflows/templates/workflows/handbook.html:17 msgid "" "Single documentation entry point for both operational knowledge and long-" "term engineering knowledge." @@ -190,15 +263,15 @@ msgstr "" "Single documentation entry point for both operational knowledge and long-" "term engineering knowledge." -#: workflows/templates/workflows/handbook.html:38 +#: workflows/templates/workflows/handbook.html:21 msgid "Operations" msgstr "Operations" -#: workflows/templates/workflows/handbook.html:39 +#: workflows/templates/workflows/handbook.html:22 msgid "Project Wiki" msgstr "Project Wiki" -#: workflows/templates/workflows/handbook.html:40 +#: workflows/templates/workflows/handbook.html:23 msgid "" "Operational and product-level documentation for onboarding, offboarding, " "PDFs, integrations, admin tools, and system behavior." @@ -206,35 +279,35 @@ msgstr "" "Operational and product-level documentation for onboarding, offboarding, " "PDFs, integrations, admin tools, and system behavior." -#: workflows/templates/workflows/handbook.html:42 +#: workflows/templates/workflows/handbook.html:25 msgid "workflow overview" msgstr "workflow overview" -#: workflows/templates/workflows/handbook.html:43 +#: workflows/templates/workflows/handbook.html:26 msgid "admin tools and system behavior" msgstr "admin tools and system behavior" -#: workflows/templates/workflows/handbook.html:44 +#: workflows/templates/workflows/handbook.html:27 msgid "integrations and operations" msgstr "integrations and operations" -#: workflows/templates/workflows/handbook.html:45 +#: workflows/templates/workflows/handbook.html:28 msgid "runbook and troubleshooting" msgstr "runbook and troubleshooting" -#: workflows/templates/workflows/handbook.html:48 +#: workflows/templates/workflows/handbook.html:31 msgid "Open Project Wiki" msgstr "Open Project Wiki" -#: workflows/templates/workflows/handbook.html:53 +#: workflows/templates/workflows/handbook.html:36 msgid "Engineering" msgstr "Engineering" -#: workflows/templates/workflows/handbook.html:54 +#: workflows/templates/workflows/handbook.html:37 msgid "Developer Handbook" msgstr "Developer Handbook" -#: workflows/templates/workflows/handbook.html:55 +#: workflows/templates/workflows/handbook.html:38 msgid "" "Engineering documentation for architecture, local setup, Docker, migrations, " "translations, deployment, testing, and long-term maintenance." @@ -242,79 +315,79 @@ msgstr "" "Engineering documentation for architecture, local setup, Docker, migrations, " "translations, deployment, testing, and long-term maintenance." -#: workflows/templates/workflows/handbook.html:57 +#: workflows/templates/workflows/handbook.html:40 msgid "repository and service structure" msgstr "repository and service structure" -#: workflows/templates/workflows/handbook.html:58 +#: workflows/templates/workflows/handbook.html:41 msgid "Docker and migration workflow" msgstr "Docker and migration workflow" -#: workflows/templates/workflows/handbook.html:59 +#: workflows/templates/workflows/handbook.html:42 msgid "translation and builder architecture" msgstr "translation and builder architecture" -#: workflows/templates/workflows/handbook.html:60 +#: workflows/templates/workflows/handbook.html:43 msgid "deployment, security, and maintenance notes" msgstr "deployment, security, and maintenance notes" -#: workflows/templates/workflows/handbook.html:63 +#: workflows/templates/workflows/handbook.html:46 msgid "Open Developer Handbook" msgstr "Open Developer Handbook" -#: workflows/templates/workflows/handbook.html:68 -#: workflows/templates/workflows/release_checklist.html:36 +#: workflows/templates/workflows/handbook.html:51 +#: workflows/templates/workflows/release_checklist.html:15 msgid "Release" msgstr "" -#: workflows/templates/workflows/handbook.html:69 -#: workflows/templates/workflows/release_checklist.html:7 -#: workflows/templates/workflows/release_checklist.html:38 +#: workflows/templates/workflows/handbook.html:52 +#: workflows/templates/workflows/release_checklist.html:4 +#: workflows/templates/workflows/release_checklist.html:17 msgid "Release Checklist" msgstr "" -#: workflows/templates/workflows/handbook.html:70 +#: workflows/templates/workflows/handbook.html:53 msgid "" "Step-by-step release runbook for rebuilds, migrations, translations, static " "assets, smoke checks, and rollout verification." msgstr "" -#: workflows/templates/workflows/handbook.html:72 +#: workflows/templates/workflows/handbook.html:55 msgid "pre-release validation commands" msgstr "" -#: workflows/templates/workflows/handbook.html:73 +#: workflows/templates/workflows/handbook.html:56 msgid "translation, static, and migration steps" msgstr "" -#: workflows/templates/workflows/handbook.html:74 +#: workflows/templates/workflows/handbook.html:57 msgid "post-release smoke checks" msgstr "" -#: workflows/templates/workflows/handbook.html:75 +#: workflows/templates/workflows/handbook.html:58 msgid "rollback and evidence checklist" msgstr "" -#: workflows/templates/workflows/handbook.html:78 +#: workflows/templates/workflows/handbook.html:61 msgid "Open Release Checklist" msgstr "" -#: workflows/templates/workflows/home.html:8 -#: workflows/templates/workflows/home.html:469 -#: workflows/templates/workflows/requests_dashboard.html:1118 +#: workflows/templates/workflows/home.html:4 +#: workflows/templates/workflows/home.html:35 +#: workflows/templates/workflows/requests_dashboard.html:263 msgid "TUBCO Onboarding & Offboarding Portal" msgstr "TUBCO Onboarding & Offboarding Portal" -#: workflows/templates/workflows/home.html:460 +#: workflows/templates/workflows/home.html:26 msgid "Abmelden" msgstr "Log out" -#: workflows/templates/workflows/home.html:468 -#: workflows/templates/workflows/requests_dashboard.html:897 +#: workflows/templates/workflows/home.html:34 +#: workflows/templates/workflows/requests_dashboard.html:32 msgid "Operations Console" msgstr "Operations Console" -#: workflows/templates/workflows/home.html:470 +#: workflows/templates/workflows/home.html:36 msgid "" "Zentrale Arbeitsfläche für Anfragen, PDF-Generierung, E-Mail-Workflows und " "Ablage in Nextcloud." @@ -322,61 +395,63 @@ msgstr "" "Central workspace for requests, PDF generation, email workflows, and storage " "in Nextcloud." -#: workflows/templates/workflows/home.html:472 +#: workflows/templates/workflows/home.html:38 msgid "Rolle:" msgstr "Role:" -#: workflows/templates/workflows/home.html:472 +#: workflows/templates/workflows/home.html:38 msgid "Admin" msgstr "Admin" -#: workflows/templates/workflows/home.html:472 +#: workflows/templates/workflows/home.html:38 msgid "Mitarbeiter" msgstr "Staff" -#: workflows/templates/workflows/home.html:474 +#: workflows/templates/workflows/home.html:40 msgid "Nextcloud:" msgstr "Nextcloud:" -#: workflows/templates/workflows/home.html:474 +#: workflows/templates/workflows/home.html:40 msgid "aktiv" msgstr "active" -#: workflows/templates/workflows/home.html:474 +#: workflows/templates/workflows/home.html:40 msgid "inaktiv" msgstr "inactive" -#: workflows/templates/workflows/home.html:477 +#: workflows/templates/workflows/home.html:43 +#: workflows/templates/workflows/offboarding_success.html:20 +#: workflows/templates/workflows/onboarding_success.html:20 msgid "E-Mail:" msgstr "Email:" -#: workflows/templates/workflows/home.html:477 +#: workflows/templates/workflows/home.html:43 msgid "Testmodus" msgstr "Test mode" -#: workflows/templates/workflows/home.html:477 +#: workflows/templates/workflows/home.html:43 msgid "Produktion" msgstr "Production" -#: workflows/templates/workflows/home.html:479 +#: workflows/templates/workflows/home.html:45 msgid "PDF + E-Mail Workflow bereit" msgstr "PDF + Email Workflow Ready" -#: workflows/templates/workflows/home.html:493 +#: workflows/templates/workflows/home.html:59 msgid "Apps" msgstr "Apps" -#: workflows/templates/workflows/home.html:494 +#: workflows/templates/workflows/home.html:60 msgid "Wählen Sie den gewünschten Prozess." msgstr "Choose the desired process." -#: workflows/templates/workflows/home.html:500 -#: workflows/templates/workflows/onboarding_form.html:36 -#: workflows/templates/workflows/requests_dashboard.html:933 +#: workflows/templates/workflows/home.html:66 +#: workflows/templates/workflows/onboarding_form.html:25 +#: workflows/templates/workflows/requests_dashboard.html:68 msgid "Onboarding" msgstr "Onboarding" -#: workflows/templates/workflows/home.html:501 +#: workflows/templates/workflows/home.html:67 msgid "" "Neue Mitarbeitende erfassen, PDF mit Briefkopf erstellen, Benachrichtigungen " "senden und in Nextcloud ablegen." @@ -384,24 +459,24 @@ msgstr "" "Capture new employees, generate a PDF with letterhead, send notifications, " "and store it in Nextcloud." -#: workflows/templates/workflows/home.html:503 +#: workflows/templates/workflows/home.html:69 msgid "Mehrschritt-Formular" msgstr "Multi-step form" -#: workflows/templates/workflows/home.html:505 +#: workflows/templates/workflows/home.html:71 msgid "E-Mail Routing" msgstr "Email routing" -#: workflows/templates/workflows/home.html:509 +#: workflows/templates/workflows/home.html:75 msgid "Onboarding starten" msgstr "Start onboarding" -#: workflows/templates/workflows/home.html:516 -#: workflows/templates/workflows/requests_dashboard.html:943 +#: workflows/templates/workflows/home.html:82 +#: workflows/templates/workflows/requests_dashboard.html:78 msgid "Offboarding" msgstr "Offboarding" -#: workflows/templates/workflows/home.html:517 +#: workflows/templates/workflows/home.html:83 msgid "" "Mitarbeitende suchen, Daten vorbefüllen, Offboarding-Dokumente erzeugen und " "Rückgabe-Prozess starten." @@ -409,29 +484,29 @@ msgstr "" "Search employees, prefill data, generate offboarding documents, and start " "the return process." -#: workflows/templates/workflows/home.html:519 +#: workflows/templates/workflows/home.html:85 msgid "Profile-Suche" msgstr "Profile search" -#: workflows/templates/workflows/home.html:520 +#: workflows/templates/workflows/home.html:86 msgid "Hardware-Liste" msgstr "Hardware list" -#: workflows/templates/workflows/home.html:521 +#: workflows/templates/workflows/home.html:87 msgid "IT-Rückgabe" msgstr "IT return" -#: workflows/templates/workflows/home.html:525 +#: workflows/templates/workflows/home.html:91 msgid "Offboarding starten" msgstr "Start offboarding" -#: workflows/templates/workflows/home.html:532 -#: workflows/templates/workflows/requests_dashboard.html:8 -#: workflows/templates/workflows/requests_dashboard.html:898 +#: workflows/templates/workflows/home.html:98 +#: workflows/templates/workflows/requests_dashboard.html:4 +#: workflows/templates/workflows/requests_dashboard.html:33 msgid "Anfragen Dashboard" msgstr "Requests Dashboard" -#: workflows/templates/workflows/home.html:533 +#: workflows/templates/workflows/home.html:99 msgid "" "Status, Suchfunktion, PDF-Links und Verlauf aller Onboarding-/Offboarding-" "Anfragen." @@ -439,308 +514,320 @@ msgstr "" "Status, search, PDF links, and history of all onboarding/offboarding " "requests." -#: workflows/templates/workflows/home.html:535 +#: workflows/templates/workflows/home.html:101 msgid "Suche" msgstr "Search" -#: workflows/templates/workflows/home.html:536 -#: workflows/templates/workflows/onboarding_intro_session.html:97 -#: workflows/templates/workflows/welcome_emails.html:125 +#: workflows/templates/workflows/home.html:102 +#: workflows/templates/workflows/onboarding_intro_session.html:41 +#: workflows/templates/workflows/welcome_emails.html:89 msgid "Status" msgstr "Status" -#: workflows/templates/workflows/home.html:537 +#: workflows/templates/workflows/home.html:103 msgid "PDF Zugriff" msgstr "PDF access" -#: workflows/templates/workflows/home.html:541 +#: workflows/templates/workflows/home.html:107 msgid "Dashboard öffnen" msgstr "Open dashboard" -#: workflows/templates/workflows/home.html:548 +#: workflows/templates/workflows/home.html:114 msgid "Admin Apps" msgstr "Admin Apps" -#: workflows/templates/workflows/home.html:549 +#: workflows/templates/workflows/home.html:115 msgid "Konfiguration, Tests und Steuerung." msgstr "Configuration, tests, and controls." -#: workflows/templates/workflows/home.html:554 +#: workflows/templates/workflows/home.html:120 msgid "Felder, Schritte und Optionen verwalten." msgstr "Manage fields, steps, and options." -#: workflows/templates/workflows/home.html:555 -#: workflows/templates/workflows/home.html:560 -#: workflows/templates/workflows/home.html:565 -#: workflows/templates/workflows/home.html:570 -#: workflows/templates/workflows/home.html:575 -#: workflows/templates/workflows/home.html:580 +#: workflows/templates/workflows/home.html:121 +#: workflows/templates/workflows/home.html:126 +#: workflows/templates/workflows/home.html:131 +#: workflows/templates/workflows/home.html:136 +#: workflows/templates/workflows/home.html:141 +#: workflows/templates/workflows/home.html:146 +#: workflows/templates/workflows/home.html:151 msgid "Öffnen" msgstr "Open" -#: workflows/templates/workflows/home.html:558 -#: workflows/templates/workflows/intro_builder.html:7 -#: workflows/templates/workflows/intro_builder.html:44 +#: workflows/templates/workflows/home.html:124 +#: workflows/templates/workflows/intro_builder.html:4 +#: workflows/templates/workflows/intro_builder.html:17 msgid "Einweisungs-Builder" msgstr "Introduction Builder" -#: workflows/templates/workflows/home.html:559 +#: workflows/templates/workflows/home.html:125 msgid "Checklistenpunkte für das Einweisungsprotokoll konfigurieren." msgstr "Configure checklist items for the introduction protocol." -#: workflows/templates/workflows/home.html:564 +#: workflows/templates/workflows/home.html:130 msgid "Project wiki and developer documentation in one place." msgstr "Project wiki and developer documentation in one place." -#: workflows/templates/workflows/home.html:568 +#: workflows/templates/workflows/home.html:135 +msgid "Wichtige Admin-Aktionen nachvollziehen und prüfen." +msgstr "" + +#: workflows/templates/workflows/home.html:139 msgid "Integrationen" msgstr "Integrations" -#: workflows/templates/workflows/home.html:569 +#: workflows/templates/workflows/home.html:140 msgid "Nextcloud- und E-Mail-Setup." msgstr "Nextcloud and email setup." -#: workflows/templates/workflows/home.html:573 -#: workflows/templates/workflows/welcome_emails.html:7 +#: workflows/templates/workflows/home.html:144 +#: workflows/templates/workflows/welcome_emails.html:4 msgid "Welcome E-Mails" msgstr "Welcome Emails" -#: workflows/templates/workflows/home.html:574 +#: workflows/templates/workflows/home.html:145 msgid "Geplante Welcome Mails verwalten." msgstr "Manage scheduled welcome emails." -#: workflows/templates/workflows/home.html:578 +#: workflows/templates/workflows/home.html:149 msgid "Django Admin" msgstr "Django Admin" -#: workflows/templates/workflows/home.html:579 +#: workflows/templates/workflows/home.html:150 msgid "Vollständige Datenverwaltung." msgstr "Full data management." -#: workflows/templates/workflows/home.html:625 +#: workflows/templates/workflows/home.html:196 msgid "Tipp: Die letzten Vorgänge sehen Sie jederzeit im Anfragen Dashboard." msgstr "Tip: You can always see the latest requests in the Requests Dashboard." -#: workflows/templates/workflows/integrations_setup.html:7 -#: workflows/templates/workflows/integrations_setup.html:79 +#: workflows/templates/workflows/includes/app_header.html:4 +#: workflows/templates/workflows/includes/app_header.html:20 +#: workflows/templates/workflows/requests_dashboard.html:24 +msgid "Zur Startseite" +msgstr "Back to home" + +#: workflows/templates/workflows/includes/app_header.html:17 +#: workflows/templates/workflows/offboarding_success.html:30 +#: workflows/templates/workflows/onboarding_success.html:29 +msgid "Zum Dashboard" +msgstr "Go to dashboard" + +#: workflows/templates/workflows/integrations_setup.html:4 +#: workflows/templates/workflows/integrations_setup.html:14 msgid "Integrationen Setup" msgstr "Integrations Setup" -#: workflows/templates/workflows/integrations_setup.html:80 +#: workflows/templates/workflows/integrations_setup.html:15 msgid "Verwalten Sie Nextcloud- und Mail-Konfiguration ohne Backend-Wechsel." msgstr "" "Manage Nextcloud and mail configuration without switching to the backend." -#: workflows/templates/workflows/integrations_setup.html:83 +#: workflows/templates/workflows/integrations_setup.html:18 msgid "Setup Nextcloud" msgstr "Setup Nextcloud" -#: workflows/templates/workflows/integrations_setup.html:84 +#: workflows/templates/workflows/integrations_setup.html:19 msgid "Setup Mail" msgstr "Setup Mail" -#: workflows/templates/workflows/integrations_setup.html:85 +#: workflows/templates/workflows/integrations_setup.html:20 msgid "E-Mail Routing & Vorlagen" msgstr "Email routing & templates" -#: workflows/templates/workflows/integrations_setup.html:120 +#: workflows/templates/workflows/integrations_setup.html:55 msgid "Nextcloud speichern" msgstr "Save Nextcloud" -#: workflows/templates/workflows/integrations_setup.html:122 -#: workflows/templates/workflows/integrations_setup.html:162 +#: workflows/templates/workflows/integrations_setup.html:57 +#: workflows/templates/workflows/integrations_setup.html:97 msgid "Leeres Passwortfeld lässt das bestehende Passwort unverändert." msgstr "Leaving the password field empty keeps the current password unchanged." -#: workflows/templates/workflows/integrations_setup.html:156 +#: workflows/templates/workflows/integrations_setup.html:91 msgid "SMTP SSL" msgstr "SMTP SSL" -#: workflows/templates/workflows/integrations_setup.html:157 +#: workflows/templates/workflows/integrations_setup.html:92 msgid "SMTP TLS" msgstr "SMTP TLS" -#: workflows/templates/workflows/integrations_setup.html:160 +#: workflows/templates/workflows/integrations_setup.html:95 msgid "Mail speichern" msgstr "Save mail settings" -#: workflows/templates/workflows/integrations_setup.html:171 +#: workflows/templates/workflows/integrations_setup.html:106 msgid "It onboarding email" msgstr "IT onboarding email" -#: workflows/templates/workflows/integrations_setup.html:175 +#: workflows/templates/workflows/integrations_setup.html:110 msgid "General info email" msgstr "General info email" -#: workflows/templates/workflows/integrations_setup.html:179 +#: workflows/templates/workflows/integrations_setup.html:114 msgid "Business card email" msgstr "Business card email" -#: workflows/templates/workflows/integrations_setup.html:183 +#: workflows/templates/workflows/integrations_setup.html:118 msgid "Hr works email" msgstr "HR Works email" -#: workflows/templates/workflows/integrations_setup.html:187 +#: workflows/templates/workflows/integrations_setup.html:122 msgid "Key notification email" msgstr "Key notification email" -#: workflows/templates/workflows/integrations_setup.html:191 +#: workflows/templates/workflows/integrations_setup.html:126 msgid "Diese Empfänger werden für condition-based E-Mail Routing genutzt." msgstr "These recipients are used for condition-based email routing." -#: workflows/templates/workflows/integrations_setup.html:218 +#: workflows/templates/workflows/integrations_setup.html:153 msgid "E-Mail Routing & Vorlagen speichern" msgstr "Save email routing & templates" -#: workflows/templates/workflows/integrations_setup.html:224 +#: workflows/templates/workflows/integrations_setup.html:159 msgid "Bedingungsregeln für zusätzliche E-Mails" msgstr "Conditional rules for additional emails" -#: workflows/templates/workflows/integrations_setup.html:225 +#: workflows/templates/workflows/integrations_setup.html:160 msgid "Zusätzliche Regeln laufen nach dem Standard-Routing." msgstr "Additional rules run after the standard routing flow." -#: workflows/templates/workflows/integrations_setup.html:232 -#: workflows/templates/workflows/integrations_setup.html:303 +#: workflows/templates/workflows/integrations_setup.html:167 +#: workflows/templates/workflows/integrations_setup.html:238 msgid "Regelname" msgstr "Rule name" -#: workflows/templates/workflows/integrations_setup.html:236 -#: workflows/templates/workflows/integrations_setup.html:307 +#: workflows/templates/workflows/integrations_setup.html:171 +#: workflows/templates/workflows/integrations_setup.html:242 msgid "Event" msgstr "Event" -#: workflows/templates/workflows/integrations_setup.html:244 -#: workflows/templates/workflows/integrations_setup.html:315 +#: workflows/templates/workflows/integrations_setup.html:179 +#: workflows/templates/workflows/integrations_setup.html:250 msgid "Feldname" msgstr "Field name" -#: workflows/templates/workflows/integrations_setup.html:248 -#: workflows/templates/workflows/integrations_setup.html:319 -#: workflows/templates/workflows/intro_builder.html:95 +#: workflows/templates/workflows/integrations_setup.html:183 +#: workflows/templates/workflows/integrations_setup.html:254 +#: workflows/templates/workflows/intro_builder.html:67 msgid "Operator" msgstr "Operator" -#: workflows/templates/workflows/integrations_setup.html:256 -#: workflows/templates/workflows/integrations_setup.html:327 +#: workflows/templates/workflows/integrations_setup.html:191 +#: workflows/templates/workflows/integrations_setup.html:262 msgid "Vergleichswert" msgstr "Comparison value" -#: workflows/templates/workflows/integrations_setup.html:260 -#: workflows/templates/workflows/integrations_setup.html:331 -#: workflows/templates/workflows/welcome_emails.html:123 +#: workflows/templates/workflows/integrations_setup.html:195 +#: workflows/templates/workflows/integrations_setup.html:266 +#: workflows/templates/workflows/welcome_emails.html:87 msgid "Empfänger" msgstr "Recipients" -#: workflows/templates/workflows/integrations_setup.html:264 -#: workflows/templates/workflows/integrations_setup.html:335 +#: workflows/templates/workflows/integrations_setup.html:199 +#: workflows/templates/workflows/integrations_setup.html:270 msgid "Template Key (optional)" msgstr "Template key (optional)" -#: workflows/templates/workflows/integrations_setup.html:266 -#: workflows/templates/workflows/integrations_setup.html:337 +#: workflows/templates/workflows/integrations_setup.html:201 +#: workflows/templates/workflows/integrations_setup.html:272 msgid "-- Custom Betreff/Body verwenden --" msgstr "-- Use custom subject/body --" -#: workflows/templates/workflows/integrations_setup.html:273 -#: workflows/templates/workflows/integrations_setup.html:344 +#: workflows/templates/workflows/integrations_setup.html:208 +#: workflows/templates/workflows/integrations_setup.html:279 msgid "Custom Subject (optional)" msgstr "Custom subject (optional)" -#: workflows/templates/workflows/integrations_setup.html:277 -#: workflows/templates/workflows/integrations_setup.html:348 +#: workflows/templates/workflows/integrations_setup.html:212 +#: workflows/templates/workflows/integrations_setup.html:283 msgid "Custom Body (optional)" msgstr "Custom body (optional)" -#: workflows/templates/workflows/integrations_setup.html:281 -#: workflows/templates/workflows/integrations_setup.html:352 +#: workflows/templates/workflows/integrations_setup.html:216 +#: workflows/templates/workflows/integrations_setup.html:287 msgid "Custom Subject (EN, optional)" msgstr "Custom subject (EN, optional)" -#: workflows/templates/workflows/integrations_setup.html:285 -#: workflows/templates/workflows/integrations_setup.html:356 +#: workflows/templates/workflows/integrations_setup.html:220 +#: workflows/templates/workflows/integrations_setup.html:291 msgid "Custom Body (EN, optional)" msgstr "Custom body (EN, optional)" -#: workflows/templates/workflows/integrations_setup.html:291 -#: workflows/templates/workflows/integrations_setup.html:361 +#: workflows/templates/workflows/integrations_setup.html:226 +#: workflows/templates/workflows/integrations_setup.html:296 msgid "PDF anhängen" msgstr "Attach PDF" -#: workflows/templates/workflows/integrations_setup.html:296 +#: workflows/templates/workflows/integrations_setup.html:231 msgid "Noch keine zusätzlichen Regeln vorhanden." msgstr "No additional rules configured yet." -#: workflows/templates/workflows/integrations_setup.html:300 +#: workflows/templates/workflows/integrations_setup.html:235 msgid "Neue Regel hinzufügen" msgstr "Add new rule" -#: workflows/templates/workflows/integrations_setup.html:366 +#: workflows/templates/workflows/integrations_setup.html:301 msgid "Regeln speichern" msgstr "Save rules" -#: workflows/templates/workflows/intro_builder.html:45 +#: workflows/templates/workflows/intro_builder.html:18 msgid "Checklistenpunkte für das Einweisungs- und Übergabeprotokoll verwalten." msgstr "Manage checklist items for the introduction and handover protocol." -#: workflows/templates/workflows/intro_builder.html:47 -#: workflows/templates/workflows/onboarding_intro_session.html:66 -msgid "Zum Dashboard" -msgstr "Go to dashboard" - -#: workflows/templates/workflows/intro_builder.html:61 -#: workflows/templates/workflows/intro_builder.html:91 +#: workflows/templates/workflows/intro_builder.html:33 +#: workflows/templates/workflows/intro_builder.html:63 msgid "Abschnitt" msgstr "Section" -#: workflows/templates/workflows/intro_builder.html:69 -#: workflows/templates/workflows/intro_builder.html:92 +#: workflows/templates/workflows/intro_builder.html:41 +#: workflows/templates/workflows/intro_builder.html:64 msgid "Checklistenpunkt (DE)" msgstr "Checklist item (DE)" -#: workflows/templates/workflows/intro_builder.html:70 +#: workflows/templates/workflows/intro_builder.html:42 msgid "z. B. Nextcloud Ordnerstruktur erklärt" msgstr "e.g. Nextcloud folder structure explained" -#: workflows/templates/workflows/intro_builder.html:73 +#: workflows/templates/workflows/intro_builder.html:45 msgid "Checklist item (EN)" msgstr "Checklist item (EN)" -#: workflows/templates/workflows/intro_builder.html:74 +#: workflows/templates/workflows/intro_builder.html:46 msgid "e.g. Nextcloud folder structure explained" msgstr "e.g. Nextcloud folder structure explained" -#: workflows/templates/workflows/intro_builder.html:77 +#: workflows/templates/workflows/intro_builder.html:49 msgid "Punkt hinzufügen" msgstr "Add item" -#: workflows/templates/workflows/intro_builder.html:80 +#: workflows/templates/workflows/intro_builder.html:52 msgid "" "Bedingungen und Sortierung können anschließend in der Tabelle bearbeitet " "werden." msgstr "Conditions and sort order can then be edited in the table." -#: workflows/templates/workflows/intro_builder.html:93 +#: workflows/templates/workflows/intro_builder.html:65 msgid "Checklistenpunkt (EN)" msgstr "Checklist item (EN)" -#: workflows/templates/workflows/intro_builder.html:94 +#: workflows/templates/workflows/intro_builder.html:66 msgid "Feld-Bedingung" msgstr "Field condition" -#: workflows/templates/workflows/intro_builder.html:96 +#: workflows/templates/workflows/intro_builder.html:68 msgid "Wert" msgstr "Value" -#: workflows/templates/workflows/intro_builder.html:131 +#: workflows/templates/workflows/intro_builder.html:103 msgid "z. B. HR Works" msgstr "e.g. HR Works" -#: workflows/templates/workflows/intro_builder.html:134 +#: workflows/templates/workflows/intro_builder.html:106 msgid "Checklistenpunkt wirklich löschen?" msgstr "Delete this checklist item?" -#: workflows/templates/workflows/intro_builder.html:138 +#: workflows/templates/workflows/intro_builder.html:110 msgid "" "Noch keine benutzerdefinierten Checklistenpunkte angelegt. Solange die Liste " "leer ist, nutzt das System die integrierten Standardpunkte." @@ -748,21 +835,21 @@ msgstr "" "No custom checklist items have been created yet. As long as the list is " "empty, the system uses the built-in default items." -#: workflows/templates/workflows/intro_builder.html:143 +#: workflows/templates/workflows/intro_builder.html:115 msgid "Reihenfolge folgt derzeit der Tabellenreihenfolge beim Speichern." msgstr "Order currently follows the table order when saving." -#: workflows/templates/workflows/intro_builder.html:145 +#: workflows/templates/workflows/intro_builder.html:117 msgid "Checkliste speichern" msgstr "Save checklist" -#: workflows/templates/workflows/offboarding_form.html:8 -#: workflows/templates/workflows/offboarding_form.html:32 +#: workflows/templates/workflows/offboarding_form.html:4 +#: workflows/templates/workflows/offboarding_form.html:27 msgid "Offboarding-Anfrage" msgstr "Offboarding request" #: workflows/templates/workflows/offboarding_form.html:15 -#: workflows/templates/workflows/onboarding_form.html:15 +#: workflows/templates/workflows/onboarding_form.html:13 msgid "Anfrage gespeichert" msgstr "Request saved" @@ -776,36 +863,86 @@ msgstr "" "generated in the background." #: workflows/templates/workflows/offboarding_form.html:17 -#: workflows/templates/workflows/onboarding_form.html:17 +#: workflows/templates/workflows/onboarding_form.html:15 msgid "Schließen" msgstr "Close" -#: workflows/templates/workflows/offboarding_form.html:35 +#: workflows/templates/workflows/offboarding_form.html:30 msgid "Mitarbeitende suchen (Name oder E-Mail)" msgstr "Search employees (name or email)" -#: workflows/templates/workflows/offboarding_form.html:36 +#: workflows/templates/workflows/offboarding_form.html:31 msgid "z. B. max.mustermann@tub.co" msgstr "e.g. john.doe@tub.co" -#: workflows/templates/workflows/offboarding_form.html:38 -#: workflows/templates/workflows/requests_dashboard.html:996 +#: workflows/templates/workflows/offboarding_form.html:33 +#: workflows/templates/workflows/requests_dashboard.html:131 msgid "Suchen" msgstr "Search" -#: workflows/templates/workflows/offboarding_form.html:50 +#: workflows/templates/workflows/offboarding_form.html:45 msgid "Vorbefüllt aus:" msgstr "Prefilled from:" -#: workflows/templates/workflows/offboarding_form.html:69 +#: workflows/templates/workflows/offboarding_form.html:64 msgid "Offboarding-Anfrage speichern" msgstr "Save offboarding request" -#: workflows/templates/workflows/onboarding_form.html:8 +#: workflows/templates/workflows/offboarding_success.html:4 +#: workflows/templates/workflows/offboarding_success.html:17 +#, fuzzy +#| msgid "Offboarding-Anfrage speichern" +msgid "Offboarding gespeichert" +msgstr "Save offboarding request" + +#: workflows/templates/workflows/offboarding_success.html:18 +#: workflows/templates/workflows/onboarding_success.html:18 +msgid "Vorgangs-ID:" +msgstr "" + +#: workflows/templates/workflows/offboarding_success.html:19 +#: workflows/templates/workflows/onboarding_success.html:19 +#, fuzzy +#| msgid "Name" +msgid "Name:" +msgstr "Name" + +#: workflows/templates/workflows/offboarding_success.html:21 +msgid "Letzter Arbeitstag:" +msgstr "" + +#: workflows/templates/workflows/offboarding_success.html:23 +#: workflows/templates/workflows/onboarding_success.html:22 +msgid "PDF:" +msgstr "" + +#: workflows/templates/workflows/offboarding_success.html:23 +#: workflows/templates/workflows/onboarding_success.html:22 +#: workflows/templates/workflows/requests_dashboard.html:188 +msgid "PDF öffnen" +msgstr "Open PDF" + +#: workflows/templates/workflows/offboarding_success.html:24 +#: workflows/templates/workflows/onboarding_success.html:23 +msgid "Datei:" +msgstr "" + +#: workflows/templates/workflows/offboarding_success.html:26 +#: workflows/templates/workflows/onboarding_success.html:25 +msgid "PDF wird im Hintergrund erstellt." +msgstr "" + +#: workflows/templates/workflows/offboarding_success.html:29 +#, fuzzy +#| msgid "Offboarding-Anfrage speichern" +msgid "Neue Offboarding-Anfrage erfassen" +msgstr "Save offboarding request" + +#: workflows/templates/workflows/onboarding_form.html:4 msgid "Onboarding-Anfrage" msgstr "Onboarding request" -#: workflows/templates/workflows/onboarding_form.html:16 +#: workflows/templates/workflows/onboarding_form.html:14 #, python-format msgid "" "Onboarding wurde erfolgreich gespeichert (ID: %(request_id)s). Das PDF wird " @@ -814,321 +951,341 @@ msgstr "" "Onboarding was saved successfully (ID: %(request_id)s). The PDF is being " "generated in the background." -#: workflows/templates/workflows/onboarding_form.html:37 +#: workflows/templates/workflows/onboarding_form.html:26 msgid "Mehrseitiges Formular mit konfigurierbaren Feldern aus dem Admin." msgstr "Multi-page form with configurable fields from the admin." -#: workflows/templates/workflows/onboarding_form.html:53 +#: workflows/templates/workflows/onboarding_form.html:42 msgid "" "Bitte prüfen Sie die markierten Felder. Ungültige Eingaben wurden erkannt." msgstr "Please check the highlighted fields. Invalid input was detected." -#: workflows/templates/workflows/onboarding_form.html:86 -#: workflows/templates/workflows/onboarding_form.html:88 -#: workflows/templates/workflows/onboarding_form.html:125 -#: workflows/templates/workflows/onboarding_form.html:127 -#: workflows/templates/workflows/welcome_emails.html:105 +#: workflows/templates/workflows/onboarding_form.html:75 +#: workflows/templates/workflows/onboarding_form.html:77 +#: workflows/templates/workflows/onboarding_form.html:114 +#: workflows/templates/workflows/onboarding_form.html:116 +#: workflows/templates/workflows/welcome_emails.html:69 msgid "Alle auswählen" msgstr "Select all" -#: workflows/templates/workflows/onboarding_form.html:87 -#: workflows/templates/workflows/onboarding_form.html:126 +#: workflows/templates/workflows/onboarding_form.html:76 +#: workflows/templates/workflows/onboarding_form.html:115 #, fuzzy #| msgid "Auswahl löschen" msgid "Auswahl aufheben" msgstr "Delete selection" -#: workflows/templates/workflows/onboarding_form.html:149 +#: workflows/templates/workflows/onboarding_form.html:138 msgid "Keine konfigurierten Felder in diesem Schritt." msgstr "No configured fields in this step." -#: workflows/templates/workflows/onboarding_form.html:154 +#: workflows/templates/workflows/onboarding_form.html:143 msgid "Fast geschafft. Bitte Abschlussdaten prüfen und die Anfrage absenden." msgstr "Almost done. Please review the final details and submit the request." -#: workflows/templates/workflows/onboarding_form.html:166 +#: workflows/templates/workflows/onboarding_form.html:155 msgid "Zurück" msgstr "Back" -#: workflows/templates/workflows/onboarding_form.html:167 +#: workflows/templates/workflows/onboarding_form.html:156 msgid "Weiter" msgstr "Next" -#: workflows/templates/workflows/onboarding_form.html:168 +#: workflows/templates/workflows/onboarding_form.html:157 +msgid "Wird gesendet..." +msgstr "" + +#: workflows/templates/workflows/onboarding_form.html:157 msgid "Onboarding-Anfrage absenden" msgstr "Submit onboarding request" -#: workflows/templates/workflows/onboarding_intro_session.html:7 -#: workflows/templates/workflows/onboarding_intro_session.html:72 +#: workflows/templates/workflows/onboarding_intro_session.html:4 +#: workflows/templates/workflows/onboarding_intro_session.html:16 msgid "Einweisung durchführen" msgstr "Run introduction" -#: workflows/templates/workflows/onboarding_intro_session.html:73 +#: workflows/templates/workflows/onboarding_intro_session.html:17 msgid "" "Einfache Live-Checkliste für das persönliche Onboarding-Gespräch. Punkte " "abhaken, Notizen ergänzen, als Entwurf speichern oder als abgeschlossen " "markieren." msgstr "" -#: workflows/templates/workflows/onboarding_intro_session.html:85 -#: workflows/templates/workflows/welcome_emails.html:122 +#: workflows/templates/workflows/onboarding_intro_session.html:29 +#: workflows/templates/workflows/welcome_emails.html:86 msgid "Mitarbeitende Person" msgstr "Employee" -#: workflows/templates/workflows/onboarding_intro_session.html:87 +#: workflows/templates/workflows/onboarding_intro_session.html:31 msgid "Name" msgstr "Name" -#: workflows/templates/workflows/onboarding_intro_session.html:88 +#: workflows/templates/workflows/onboarding_intro_session.html:32 msgid "Abteilung" msgstr "Department" -#: workflows/templates/workflows/onboarding_intro_session.html:89 +#: workflows/templates/workflows/onboarding_intro_session.html:33 msgid "Berufsbezeichnung" msgstr "Job title" -#: workflows/templates/workflows/onboarding_intro_session.html:90 +#: workflows/templates/workflows/onboarding_intro_session.html:34 msgid "Dienstliche E-Mail" msgstr "Work email" -#: workflows/templates/workflows/onboarding_intro_session.html:91 +#: workflows/templates/workflows/onboarding_intro_session.html:35 msgid "Vertragsbeginn" msgstr "Contract start" -#: workflows/templates/workflows/onboarding_intro_session.html:95 +#: workflows/templates/workflows/onboarding_intro_session.html:39 msgid "Sitzungsstatus" msgstr "Session status" -#: workflows/templates/workflows/onboarding_intro_session.html:99 +#: workflows/templates/workflows/onboarding_intro_session.html:43 msgid "Abgeschlossen von" msgstr "Completed by" -#: workflows/templates/workflows/onboarding_intro_session.html:100 +#: workflows/templates/workflows/onboarding_intro_session.html:44 msgid "Abgeschlossen am" msgstr "Completed at" -#: workflows/templates/workflows/onboarding_intro_session.html:101 +#: workflows/templates/workflows/onboarding_intro_session.html:45 msgid "Letzte Änderung" msgstr "Last updated" -#: workflows/templates/workflows/onboarding_intro_session.html:109 +#: workflows/templates/workflows/onboarding_intro_session.html:53 msgid "Fortschritt der Einweisung" msgstr "Introduction progress" -#: workflows/templates/workflows/onboarding_intro_session.html:110 +#: workflows/templates/workflows/onboarding_intro_session.html:54 #, python-format msgid "%(checked)s von %(total)s Punkten erledigt" msgstr "%(checked)s of %(total)s items completed" -#: workflows/templates/workflows/onboarding_intro_session.html:134 +#: workflows/templates/workflows/onboarding_intro_session.html:78 msgid "Notizen" msgstr "Notes" -#: workflows/templates/workflows/onboarding_intro_session.html:136 +#: workflows/templates/workflows/onboarding_intro_session.html:80 msgid "" "Diese Seite bleibt bewusst einfach: echte Web-Checkboxen, Notizen und ein " "klarer Entwurf/Abschluss-Status. Kein zusätzlicher komplexer PDF-Signatur-" "Workflow." msgstr "" -#: workflows/templates/workflows/onboarding_intro_session.html:138 +#: workflows/templates/workflows/onboarding_intro_session.html:82 msgid "Als Entwurf speichern" msgstr "Save as draft" -#: workflows/templates/workflows/onboarding_intro_session.html:139 +#: workflows/templates/workflows/onboarding_intro_session.html:83 msgid "Als abgeschlossen markieren" msgstr "Mark as completed" -#: workflows/templates/workflows/onboarding_intro_session.html:140 +#: workflows/templates/workflows/onboarding_intro_session.html:84 msgid "Einweisung wirklich zurücksetzen?" msgstr "Reset the introduction session?" -#: workflows/templates/workflows/onboarding_intro_session.html:140 +#: workflows/templates/workflows/onboarding_intro_session.html:84 msgid "Alles zurücksetzen" msgstr "Reset all" -#: workflows/templates/workflows/onboarding_intro_session.html:146 -#: workflows/templates/workflows/requests_dashboard.html:1065 +#: workflows/templates/workflows/onboarding_intro_session.html:90 +#: workflows/templates/workflows/requests_dashboard.html:204 msgid "Live-Protokoll" msgstr "Live protocol" -#: workflows/templates/workflows/onboarding_intro_session.html:147 +#: workflows/templates/workflows/onboarding_intro_session.html:91 msgid "" "Erzeugt das Live-Protokoll nur aus den aktuell gespeicherten Haken und " "Notizen." msgstr "" -#: workflows/templates/workflows/onboarding_intro_session.html:151 +#: workflows/templates/workflows/onboarding_intro_session.html:95 msgid "Live-Protokoll erzeugen" msgstr "Generate live protocol" -#: workflows/templates/workflows/onboarding_intro_session.html:154 -#: workflows/templates/workflows/requests_dashboard.html:1069 +#: workflows/templates/workflows/onboarding_intro_session.html:98 +#: workflows/templates/workflows/requests_dashboard.html:208 msgid "Live-Protokoll öffnen" msgstr "Open live protocol" -#: workflows/templates/workflows/release_checklist.html:39 +#: workflows/templates/workflows/onboarding_success.html:4 +#, fuzzy +#| msgid "Offboarding-Anfrage speichern" +msgid "Onboarding gespeichert" +msgstr "Save offboarding request" + +#: workflows/templates/workflows/onboarding_success.html:17 +#, fuzzy +#| msgid "Anfrage gespeichert" +msgid "Anfrage erfolgreich gespeichert" +msgstr "Request saved" + +#: workflows/templates/workflows/onboarding_success.html:28 +msgid "Neue Anfrage erfassen" +msgstr "" + +#: workflows/templates/workflows/release_checklist.html:18 #, fuzzy #| msgid "Back to Home" msgid "Back to Handbook" msgstr "Back to home" -#: workflows/templates/workflows/release_checklist.html:41 +#: workflows/templates/workflows/release_checklist.html:20 msgid "" "Single runbook for preparing, validating, and evidencing a safe application " "release. Use it for both local production-like rollouts and future CI/CD " "handoffs." msgstr "" -#: workflows/templates/workflows/release_checklist.html:46 +#: workflows/templates/workflows/release_checklist.html:25 msgid "1. Pre-release checks" msgstr "" -#: workflows/templates/workflows/release_checklist.html:48 +#: workflows/templates/workflows/release_checklist.html:27 msgid "Confirm git working tree is clean or intentionally scoped." msgstr "" -#: workflows/templates/workflows/release_checklist.html:49 +#: workflows/templates/workflows/release_checklist.html:28 msgid "" "Read the latest Project Wiki and Developer Handbook updates for architecture " "changes." msgstr "" -#: workflows/templates/workflows/release_checklist.html:50 +#: workflows/templates/workflows/release_checklist.html:29 msgid "" "Check environment changes in .env.example and deployment secrets if " "integrations changed." msgstr "" -#: workflows/templates/workflows/release_checklist.html:51 +#: workflows/templates/workflows/release_checklist.html:30 msgid "" "If dependencies changed, rebuild web and worker images before validation." msgstr "" -#: workflows/templates/workflows/release_checklist.html:58 +#: workflows/templates/workflows/release_checklist.html:37 msgid "2. Validation commands" msgstr "" -#: workflows/templates/workflows/release_checklist.html:60 +#: workflows/templates/workflows/release_checklist.html:39 msgid "Run Django system checks." msgstr "" -#: workflows/templates/workflows/release_checklist.html:61 +#: workflows/templates/workflows/release_checklist.html:40 msgid "Run tests or a targeted verification command for the changed area." msgstr "" -#: workflows/templates/workflows/release_checklist.html:62 +#: workflows/templates/workflows/release_checklist.html:41 msgid "Compile translations after UI/content changes." msgstr "" -#: workflows/templates/workflows/release_checklist.html:63 +#: workflows/templates/workflows/release_checklist.html:42 msgid "If dependencies changed, verify imports do not emit warnings." msgstr "" -#: workflows/templates/workflows/release_checklist.html:72 +#: workflows/templates/workflows/release_checklist.html:51 msgid "3. Data and asset steps" msgstr "" -#: workflows/templates/workflows/release_checklist.html:74 +#: workflows/templates/workflows/release_checklist.html:53 msgid "Create and apply migrations if models changed." msgstr "" -#: workflows/templates/workflows/release_checklist.html:75 +#: workflows/templates/workflows/release_checklist.html:54 msgid "Run collectstatic if UI assets changed." msgstr "" -#: workflows/templates/workflows/release_checklist.html:76 +#: workflows/templates/workflows/release_checklist.html:55 msgid "Generate fresh PDFs if PDF templates or document logic changed." msgstr "" -#: workflows/templates/workflows/release_checklist.html:77 +#: workflows/templates/workflows/release_checklist.html:56 msgid "Confirm file outputs appear under backend/media/pdfs/." msgstr "" -#: workflows/templates/workflows/release_checklist.html:85 +#: workflows/templates/workflows/release_checklist.html:64 #, fuzzy #| msgid "Integrationen" msgid "4. Integration checks" msgstr "Integrations" -#: workflows/templates/workflows/release_checklist.html:87 +#: workflows/templates/workflows/release_checklist.html:66 msgid "Verify the health endpoint returns status ok." msgstr "" -#: workflows/templates/workflows/release_checklist.html:88 +#: workflows/templates/workflows/release_checklist.html:67 msgid "Verify MailHog in test mode or SMTP in production mode." msgstr "" -#: workflows/templates/workflows/release_checklist.html:89 +#: workflows/templates/workflows/release_checklist.html:68 msgid "Verify Nextcloud upload if synchronization behavior changed." msgstr "" -#: workflows/templates/workflows/release_checklist.html:90 +#: workflows/templates/workflows/release_checklist.html:69 msgid "" "Verify welcome-email scheduling or notification rules if email routing " "changed." msgstr "" -#: workflows/templates/workflows/release_checklist.html:97 +#: workflows/templates/workflows/release_checklist.html:76 msgid "5. Release evidence" msgstr "" -#: workflows/templates/workflows/release_checklist.html:99 +#: workflows/templates/workflows/release_checklist.html:78 msgid "Record which checks were run and their result." msgstr "" -#: workflows/templates/workflows/release_checklist.html:100 +#: workflows/templates/workflows/release_checklist.html:79 msgid "Take a snapshot commit before moving to the next change phase." msgstr "" -#: workflows/templates/workflows/release_checklist.html:101 +#: workflows/templates/workflows/release_checklist.html:80 msgid "" "If a release introduces new operations or engineering behavior, update both " "handbooks." msgstr "" -#: workflows/templates/workflows/release_checklist.html:102 +#: workflows/templates/workflows/release_checklist.html:81 msgid "" "Keep at least one successful onboarding and one offboarding smoke example " "during major workflow changes." msgstr "" -#: workflows/templates/workflows/release_checklist.html:107 +#: workflows/templates/workflows/release_checklist.html:86 msgid "6. Rollback basics" msgstr "" -#: workflows/templates/workflows/release_checklist.html:109 +#: workflows/templates/workflows/release_checklist.html:88 msgid "" "If rollout fails after code-only changes, redeploy the previous snapshot " "commit." msgstr "" -#: workflows/templates/workflows/release_checklist.html:110 +#: workflows/templates/workflows/release_checklist.html:89 msgid "" "If rollout includes schema changes, verify backward compatibility before " "rollback." msgstr "" -#: workflows/templates/workflows/release_checklist.html:111 +#: workflows/templates/workflows/release_checklist.html:90 msgid "" "If integrations fail, switch email mode/test settings conservatively before " "wider retry." msgstr "" -#: workflows/templates/workflows/release_checklist.html:112 +#: workflows/templates/workflows/release_checklist.html:91 msgid "" "Use logs from web and worker containers to isolate whether the issue is " "request, task, or integration related." msgstr "" -#: workflows/templates/workflows/release_checklist.html:119 +#: workflows/templates/workflows/release_checklist.html:98 msgid "" "Project rule: German remains the primary/fallback language. English is " "secondary. If a release adds new dynamic text, add the German source first " "and then the English value." msgstr "" -#: workflows/templates/workflows/requests_dashboard.html:899 +#: workflows/templates/workflows/requests_dashboard.html:34 msgid "" "Steuert Onboarding- und Offboarding-Prozesse an einem Ort. Die Oberfläche " "priorisiert Kennzahlen, Aktivität und direkte Aktionen in der Vorgangsliste." @@ -1136,23 +1293,23 @@ msgstr "" "Controls onboarding and offboarding processes in one place. The interface " "prioritizes metrics, activity, and direct actions in the request list." -#: workflows/templates/workflows/requests_dashboard.html:901 +#: workflows/templates/workflows/requests_dashboard.html:36 msgid "Onboarding + Offboarding" msgstr "Onboarding + Offboarding" -#: workflows/templates/workflows/requests_dashboard.html:902 +#: workflows/templates/workflows/requests_dashboard.html:37 msgid "PDFs + Live-Protokolle" msgstr "PDFs + live protocols" -#: workflows/templates/workflows/requests_dashboard.html:903 +#: workflows/templates/workflows/requests_dashboard.html:38 msgid "Suche + Bulk-Aktionen" msgstr "Search + bulk actions" -#: workflows/templates/workflows/requests_dashboard.html:909 +#: workflows/templates/workflows/requests_dashboard.html:44 msgid "Aktivitätsverlauf" msgstr "Activity Timeline" -#: workflows/templates/workflows/requests_dashboard.html:910 +#: workflows/templates/workflows/requests_dashboard.html:45 msgid "" "Die letzten 14 Tage in einer kompakten Ansicht über alle Onboarding- und " "Offboarding-Vorgänge." @@ -1160,148 +1317,135 @@ msgstr "" "The last 14 days in a compact view across all onboarding and offboarding " "requests." -#: workflows/templates/workflows/requests_dashboard.html:912 +#: workflows/templates/workflows/requests_dashboard.html:47 msgid "14 Tage" msgstr "14 days" -#: workflows/templates/workflows/requests_dashboard.html:938 +#: workflows/templates/workflows/requests_dashboard.html:73 msgid "Alle erfassten Onboarding-Vorgänge im aktuellen System." msgstr "All onboarding requests captured in the current system." -#: workflows/templates/workflows/requests_dashboard.html:948 +#: workflows/templates/workflows/requests_dashboard.html:83 msgid "Austritte und Rückgaben in derselben Prozessübersicht." msgstr "Departures and returns in the same process overview." -#: workflows/templates/workflows/requests_dashboard.html:953 +#: workflows/templates/workflows/requests_dashboard.html:88 msgid "Gesamtbestand" msgstr "Total records" -#: workflows/templates/workflows/requests_dashboard.html:958 +#: workflows/templates/workflows/requests_dashboard.html:93 msgid "Alle Vorgänge, durchsuchbar und mit Dokumenten verknüpft." msgstr "All requests, searchable and linked with documents." -#: workflows/templates/workflows/requests_dashboard.html:963 +#: workflows/templates/workflows/requests_dashboard.html:98 msgid "Aktivität 14 Tage" msgstr "Activity 14 Days" -#: workflows/templates/workflows/requests_dashboard.html:968 +#: workflows/templates/workflows/requests_dashboard.html:103 msgid "Zeitraum des visuellen Aktivitätsverlaufs in dieser Übersicht." msgstr "Time span of the visual activity timeline in this overview." -#: workflows/templates/workflows/requests_dashboard.html:983 +#: workflows/templates/workflows/requests_dashboard.html:118 msgid "Vorgänge" msgstr "Requests" -#: workflows/templates/workflows/requests_dashboard.html:984 +#: workflows/templates/workflows/requests_dashboard.html:119 msgid "" "Dokumente, Status und Einweisungsaktionen in einer verdichteten " "Arbeitsansicht." msgstr "Documents, status, and introduction actions in a condensed work view." -#: workflows/templates/workflows/requests_dashboard.html:986 +#: workflows/templates/workflows/requests_dashboard.html:121 #, python-format msgid "%(count)s Einträge sichtbar" msgstr "%(count)s entries visible" -#: workflows/templates/workflows/requests_dashboard.html:993 +#: workflows/templates/workflows/requests_dashboard.html:128 msgid "Nach Name oder E-Mail suchen" msgstr "Search by name or email" -#: workflows/templates/workflows/requests_dashboard.html:998 -msgid "Zurücksetzen" -msgstr "Reset" - -#: workflows/templates/workflows/requests_dashboard.html:1002 +#: workflows/templates/workflows/requests_dashboard.html:137 msgid "" "Datensätze können direkt in der Tabelle gefiltert, geöffnet, geprüft oder " "gelöscht werden." msgstr "" "Records can be filtered, opened, checked, or deleted directly in the table." -#: workflows/templates/workflows/requests_dashboard.html:1009 -#: workflows/templates/workflows/welcome_emails.html:114 +#: workflows/templates/workflows/requests_dashboard.html:144 +#: workflows/templates/workflows/welcome_emails.html:78 msgid "ausgewählt" msgstr "selected" -#: workflows/templates/workflows/requests_dashboard.html:1010 +#: workflows/templates/workflows/requests_dashboard.html:145 msgid "Auswahl löschen" msgstr "Delete selection" -#: workflows/templates/workflows/requests_dashboard.html:1022 -msgid "Typ" -msgstr "Type" - -#: workflows/templates/workflows/requests_dashboard.html:1023 +#: workflows/templates/workflows/requests_dashboard.html:158 msgid "Person" msgstr "Person" -#: workflows/templates/workflows/requests_dashboard.html:1024 +#: workflows/templates/workflows/requests_dashboard.html:159 msgid "E-Mail" msgstr "Email" -#: workflows/templates/workflows/requests_dashboard.html:1025 +#: workflows/templates/workflows/requests_dashboard.html:160 msgid "Erstellt" msgstr "Created" -#: workflows/templates/workflows/requests_dashboard.html:1026 +#: workflows/templates/workflows/requests_dashboard.html:161 msgid "Dokument" msgstr "Document" -#: workflows/templates/workflows/requests_dashboard.html:1027 -#: workflows/templates/workflows/requests_dashboard.html:1062 +#: workflows/templates/workflows/requests_dashboard.html:162 +#: workflows/templates/workflows/requests_dashboard.html:201 msgid "Einweisung" msgstr "Introduction" -#: workflows/templates/workflows/requests_dashboard.html:1028 -#: workflows/templates/workflows/welcome_emails.html:127 -msgid "Aktion" -msgstr "Action" - -#: workflows/templates/workflows/requests_dashboard.html:1053 -msgid "PDF öffnen" -msgstr "Open PDF" - -#: workflows/templates/workflows/requests_dashboard.html:1055 +#: workflows/templates/workflows/requests_dashboard.html:190 msgid "Noch nicht verfügbar" msgstr "Not available yet" -#: workflows/templates/workflows/requests_dashboard.html:1067 +#: workflows/templates/workflows/requests_dashboard.html:206 msgid "Einweisung öffnen" msgstr "Open introduction" -#: workflows/templates/workflows/requests_dashboard.html:1074 +#: workflows/templates/workflows/requests_dashboard.html:213 msgid "Standard-Einweisungs-PDF" msgstr "Standard introduction PDF" -#: workflows/templates/workflows/requests_dashboard.html:1079 +#: workflows/templates/workflows/requests_dashboard.html:218 msgid "Neu erzeugen" msgstr "Regenerate" -#: workflows/templates/workflows/requests_dashboard.html:1081 +#: workflows/templates/workflows/requests_dashboard.html:220 msgid "Standard-PDF öffnen" msgstr "Open standard PDF" -#: workflows/templates/workflows/requests_dashboard.html:1085 +#: workflows/templates/workflows/requests_dashboard.html:224 msgid "PDF erzeugen" msgstr "Generate PDF" -#: workflows/templates/workflows/requests_dashboard.html:1092 +#: workflows/templates/workflows/requests_dashboard.html:231 msgid "Status:" msgstr "Status:" -#: workflows/templates/workflows/requests_dashboard.html:1096 +#: workflows/templates/workflows/requests_dashboard.html:235 msgid "Nicht relevant" msgstr "Not relevant" -#: workflows/templates/workflows/requests_dashboard.html:1109 +#: workflows/templates/workflows/requests_dashboard.html:242 +msgid "Erneut versuchen" +msgstr "" + +#: workflows/templates/workflows/requests_dashboard.html:254 msgid "Noch keine Vorgänge vorhanden." msgstr "No requests available yet." -#: workflows/templates/workflows/welcome_emails.html:50 +#: workflows/templates/workflows/welcome_emails.html:14 msgid "Geplante Welcome E-Mails" msgstr "Scheduled welcome emails" -#: workflows/templates/workflows/welcome_emails.html:51 +#: workflows/templates/workflows/welcome_emails.html:15 msgid "" "Welcome-Mails konfigurieren und geplante Mails steuern (sofort senden, " "pausieren, fortsetzen, abbrechen)." @@ -1309,104 +1453,100 @@ msgstr "" "Configure welcome emails and control scheduled messages (send now, pause, " "resume, cancel)." -#: workflows/templates/workflows/welcome_emails.html:63 +#: workflows/templates/workflows/welcome_emails.html:27 msgid "Verzögerung in Tagen" msgstr "Delay in days" -#: workflows/templates/workflows/welcome_emails.html:67 +#: workflows/templates/workflows/welcome_emails.html:31 msgid "Absenderadresse (optional)" msgstr "Sender address (optional)" -#: workflows/templates/workflows/welcome_emails.html:68 +#: workflows/templates/workflows/welcome_emails.html:32 msgid "Leer = System-Absender" msgstr "Empty = system sender" -#: workflows/templates/workflows/welcome_emails.html:88 +#: workflows/templates/workflows/welcome_emails.html:52 msgid "Onboarding-PDF anhängen" msgstr "Attach onboarding PDF" -#: workflows/templates/workflows/welcome_emails.html:91 +#: workflows/templates/workflows/welcome_emails.html:55 msgid "Verfügbare Keywords:" msgstr "Available keywords:" -#: workflows/templates/workflows/welcome_emails.html:97 +#: workflows/templates/workflows/welcome_emails.html:61 msgid "Welcome-Einstellungen speichern" msgstr "Save welcome settings" -#: workflows/templates/workflows/welcome_emails.html:108 -#: workflows/templates/workflows/welcome_emails.html:163 -msgid "Pausieren" -msgstr "Pause" - -#: workflows/templates/workflows/welcome_emails.html:109 -#: workflows/templates/workflows/welcome_emails.html:157 -msgid "Sofort senden" -msgstr "Send now" - -#: workflows/templates/workflows/welcome_emails.html:113 -msgid "Bulk ausführen" -msgstr "Run bulk action" - -#: workflows/templates/workflows/welcome_emails.html:120 -msgid "Auswahl" -msgstr "Select" - -#: workflows/templates/workflows/welcome_emails.html:124 -msgid "Geplant für" -msgstr "Scheduled for" - -#: workflows/templates/workflows/welcome_emails.html:126 -msgid "Gesendet am" -msgstr "Sent at" - -#: workflows/templates/workflows/welcome_emails.html:140 -msgid "Geplant" -msgstr "Scheduled" - -#: workflows/templates/workflows/welcome_emails.html:142 -msgid "Pausiert" -msgstr "Paused" - -#: workflows/templates/workflows/welcome_emails.html:144 -msgid "Abgebrochen" -msgstr "Cancelled" - -#: workflows/templates/workflows/welcome_emails.html:146 -msgid "Gesendet" -msgstr "Sent" - -#: workflows/templates/workflows/welcome_emails.html:148 -msgid "Fehlgeschlagen" -msgstr "Failed" - -#: workflows/templates/workflows/welcome_emails.html:168 -msgid "Fortsetzen" -msgstr "Resume" - -#: workflows/templates/workflows/welcome_emails.html:174 -msgid "Abbrechen" -msgstr "Cancel" - -#: workflows/templates/workflows/welcome_emails.html:181 -msgid "Keine geplanten Welcome E-Mails vorhanden." -msgstr "No scheduled welcome emails available." - -#: workflows/templates/workflows/welcome_emails.html:224 +#: workflows/templates/workflows/welcome_emails.html:65 msgid "Bitte mindestens einen Welcome-Eintrag auswählen." msgstr "Please select at least one welcome entry." -#: workflows/templates/workflows/welcome_emails.html:229 +#: workflows/templates/workflows/welcome_emails.html:65 msgid "Ausgewählte Welcome-Einträge wirklich löschen?" msgstr "Delete the selected welcome entries?" -#: workflows/templates/workflows/welcome_emails.html:232 +#: workflows/templates/workflows/welcome_emails.html:65 msgid "Ausgewählte Welcome-Einträge pausieren?" msgstr "Pause the selected welcome entries?" -#: workflows/templates/workflows/welcome_emails.html:234 +#: workflows/templates/workflows/welcome_emails.html:65 msgid "Ausgewählte Welcome-Einträge sofort senden?" msgstr "Send the selected welcome entries now?" +#: workflows/templates/workflows/welcome_emails.html:72 +#: workflows/templates/workflows/welcome_emails.html:127 +msgid "Pausieren" +msgstr "Pause" + +#: workflows/templates/workflows/welcome_emails.html:73 +#: workflows/templates/workflows/welcome_emails.html:121 +msgid "Sofort senden" +msgstr "Send now" + +#: workflows/templates/workflows/welcome_emails.html:77 +msgid "Bulk ausführen" +msgstr "Run bulk action" + +#: workflows/templates/workflows/welcome_emails.html:84 +msgid "Auswahl" +msgstr "Select" + +#: workflows/templates/workflows/welcome_emails.html:88 +msgid "Geplant für" +msgstr "Scheduled for" + +#: workflows/templates/workflows/welcome_emails.html:90 +msgid "Gesendet am" +msgstr "Sent at" + +#: workflows/templates/workflows/welcome_emails.html:104 +msgid "Geplant" +msgstr "Scheduled" + +#: workflows/templates/workflows/welcome_emails.html:106 +msgid "Pausiert" +msgstr "Paused" + +#: workflows/templates/workflows/welcome_emails.html:108 +msgid "Abgebrochen" +msgstr "Cancelled" + +#: workflows/templates/workflows/welcome_emails.html:110 +msgid "Gesendet" +msgstr "Sent" + +#: workflows/templates/workflows/welcome_emails.html:132 +msgid "Fortsetzen" +msgstr "Resume" + +#: workflows/templates/workflows/welcome_emails.html:138 +msgid "Abbrechen" +msgstr "Cancel" + +#: workflows/templates/workflows/welcome_emails.html:145 +msgid "Keine geplanten Welcome E-Mails vorhanden." +msgstr "No scheduled welcome emails available." + #: workflows/views.py:76 msgid "Stammdaten" msgstr "Master data" @@ -1439,47 +1579,50 @@ msgstr "Finish" msgid "Notizen und Freigabe" msgstr "Notes and approval" -#: workflows/views.py:245 +#: workflows/views.py:308 msgid "Sie haben keine Berechtigung für diese Aktion." msgstr "You do not have permission for this action." -#: workflows/views.py:254 +#: workflows/views.py:317 msgid "Keine Einträge ausgewählt." msgstr "No entries selected." -#: workflows/views.py:283 +#: workflows/views.py:353 #, python-format msgid "%(count)s Eintrag/Einträge gelöscht." msgstr "%(count)s entry/entries deleted." -#: workflows/views.py:285 +#: workflows/views.py:355 #, python-format msgid "%(count)s Auswahl(en) konnten nicht verarbeitet werden." msgstr "%(count)s selection(s) could not be processed." -#: workflows/views.py:287 +#: workflows/views.py:357 msgid "Keine passenden Einträge gefunden." msgstr "No matching entries found." -#: workflows/views.py:446 +#: workflows/views.py:521 msgid "Einweisungs- und Übergabeprotokoll wurde erzeugt." msgstr "Introduction and handover protocol was generated." -#: workflows/views.py:463 +#: workflows/views.py:539 msgid "Einweisungsprotokoll aus Live-Status wurde erzeugt." msgstr "Introduction protocol from live status was generated." -#: workflows/views.py:492 +#: workflows/views.py:569 msgid "Einweisung wurde zurückgesetzt." msgstr "Introduction was reset." -#: workflows/views.py:498 +#: workflows/views.py:583 msgid "Einweisung wurde als abgeschlossen gespeichert." msgstr "Introduction was saved as completed." -#: workflows/views.py:503 +#: workflows/views.py:596 msgid "Einweisung wurde als Entwurf gespeichert." msgstr "Introduction was saved as draft." +#~ msgid "Back to Home" +#~ msgstr "Back to home" + #~ msgid "Dokumentation, Architektur und Runbook." #~ msgstr "Documentation, architecture, and runbook." diff --git a/backend/workflows/migrations/0033_offboardingrequest_last_error_and_more.py b/backend/workflows/migrations/0033_offboardingrequest_last_error_and_more.py new file mode 100644 index 0000000..d75f3bc --- /dev/null +++ b/backend/workflows/migrations/0033_offboardingrequest_last_error_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 5.1.5 on 2026-03-25 19:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('workflows', '0032_adminauditlog'), + ] + + operations = [ + migrations.AddField( + model_name='offboardingrequest', + name='last_error', + field=models.TextField(blank=True), + ), + migrations.AddField( + model_name='offboardingrequest', + name='processing_status', + field=models.CharField(choices=[('submitted', 'Eingereicht'), ('processing', 'In Bearbeitung'), ('completed', 'Abgeschlossen'), ('failed', 'Fehlgeschlagen')], default='submitted', max_length=20), + ), + migrations.AddField( + model_name='onboardingrequest', + name='last_error', + field=models.TextField(blank=True), + ), + migrations.AddField( + model_name='onboardingrequest', + name='processing_status', + field=models.CharField(choices=[('submitted', 'Eingereicht'), ('processing', 'In Bearbeitung'), ('completed', 'Abgeschlossen'), ('failed', 'Fehlgeschlagen')], default='submitted', max_length=20), + ), + ] diff --git a/backend/workflows/models.py b/backend/workflows/models.py index 66fc850..2d01754 100644 --- a/backend/workflows/models.py +++ b/backend/workflows/models.py @@ -1,6 +1,7 @@ from django.conf import settings from django.db import models from django.utils.translation import get_language +from django.utils.translation import gettext_lazy as _ def _normalized_language_code(value: str | None) -> str: @@ -50,6 +51,13 @@ class AdminAuditLog(models.Model): class OnboardingRequest(models.Model): + STATUS_CHOICES = [ + ('submitted', _('Eingereicht')), + ('processing', _('In Bearbeitung')), + ('completed', _('Abgeschlossen')), + ('failed', _('Fehlgeschlagen')), + ] + full_name = models.CharField(max_length=255, verbose_name='Vorname und Nachname') gender = models.CharField( max_length=20, @@ -112,6 +120,8 @@ class OnboardingRequest(models.Model): generated_pdf_path = models.CharField(max_length=500, blank=True) intro_pdf_path = models.CharField(max_length=500, blank=True) + processing_status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='submitted') + last_error = models.TextField(blank=True) preferred_language = models.CharField(max_length=10, blank=True, default='de', db_default='de') created_at = models.DateTimeField(auto_now_add=True) @@ -447,6 +457,8 @@ class SystemEmailConfig(models.Model): class OffboardingRequest(models.Model): + STATUS_CHOICES = OnboardingRequest.STATUS_CHOICES + employee_profile = models.ForeignKey(EmployeeProfile, null=True, blank=True, on_delete=models.SET_NULL) full_name = models.CharField(max_length=255, verbose_name='Vorname und Nachname') work_email = models.EmailField(verbose_name='Dienstliche E-Mail-Adresse') @@ -460,6 +472,8 @@ class OffboardingRequest(models.Model): requested_by_name = models.CharField(max_length=255, blank=True, verbose_name='Name der anfordernden Person') preferred_language = models.CharField(max_length=10, blank=True, default='de', db_default='de') generated_pdf_path = models.CharField(max_length=500, blank=True) + processing_status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='submitted') + last_error = models.TextField(blank=True) created_at = models.DateTimeField(auto_now_add=True) def __str__(self) -> str: diff --git a/backend/workflows/tasks.py b/backend/workflows/tasks.py index 22358f0..06355b6 100644 --- a/backend/workflows/tasks.py +++ b/backend/workflows/tasks.py @@ -1195,159 +1195,183 @@ def _generate_offboarding_pdf(request_obj: OffboardingRequest) -> Path: @shared_task def process_onboarding_request(onboarding_request_id: int) -> None: request_obj = OnboardingRequest.objects.get(id=onboarding_request_id) - it_email, general_info_email, business_card_email, hr_works_email, key_email = _resolve_workflow_emails() - salutation = (request_obj.get_gender_display() or '').strip() - display_name = f"{salutation} {request_obj.full_name}".strip() + request_obj.processing_status = 'processing' + request_obj.last_error = '' + request_obj.save(update_fields=['processing_status', 'last_error']) + try: + it_email, general_info_email, business_card_email, hr_works_email, key_email = _resolve_workflow_emails() + salutation = (request_obj.get_gender_display() or '').strip() + display_name = f"{salutation} {request_obj.full_name}".strip() - first_name, last_name = _split_name(request_obj.full_name) - EmployeeProfile.objects.update_or_create( - work_email=request_obj.work_email, - defaults={ - 'full_name': request_obj.full_name, - 'first_name': first_name, - 'last_name': last_name, - 'department': request_obj.department, - 'job_title': request_obj.job_title, - }, - ) - - pdf_path = _generate_onboarding_pdf(request_obj) - request_obj.generated_pdf_path = str(pdf_path) - request_obj.save(update_fields=['generated_pdf_path']) - - email_context = { - 'FULL_NAME': display_name, - 'VORNAME': first_name, - 'NACHNAME': last_name, - 'DEPARTMENT': request_obj.department or '-', - 'CONTRACT_START': request_obj.contract_start, - 'EMAIL': request_obj.work_email, - 'REQUESTED_BY': request_obj.onboarded_by_email or '-', - 'BUSINESS_CARD_NAME': request_obj.business_card_name or display_name, - 'BUSINESS_CARD_TITLE': request_obj.business_card_title or '-', - 'BUSINESS_CARD_EMAIL': request_obj.business_card_email or request_obj.work_email, - 'BUSINESS_CARD_PHONE': request_obj.business_card_phone or '-', - 'PDF_LINK': settings.ONBOARDING_SHARED_PDF_LINK, - } - - _send_templated_email( - template_key='onboarding_it', - context=email_context, - to=[it_email], - attachments=[pdf_path], - language_code=request_obj.preferred_language, - ) - _send_templated_email( - template_key='onboarding_general_info', - context=email_context, - to=[general_info_email], - language_code=request_obj.preferred_language, - ) - - if request_obj.order_business_cards: - _send_templated_email( - template_key='onboarding_business_card', - context=email_context, - to=[business_card_email], - language_code=request_obj.preferred_language, + first_name, last_name = _split_name(request_obj.full_name) + EmployeeProfile.objects.update_or_create( + work_email=request_obj.work_email, + defaults={ + 'full_name': request_obj.full_name, + 'first_name': first_name, + 'last_name': last_name, + 'department': request_obj.department, + 'job_title': request_obj.job_title, + }, ) - if 'HR Works' in request_obj.needed_accesses: - _send_templated_email( - template_key='onboarding_hr_works', - context=email_context, - to=[hr_works_email], - language_code=request_obj.preferred_language, - ) + pdf_path = _generate_onboarding_pdf(request_obj) + request_obj.generated_pdf_path = str(pdf_path) + request_obj.save(update_fields=['generated_pdf_path']) - if 'Schlüssel' in request_obj.needed_devices: - _send_templated_email( - template_key='onboarding_key', - context=email_context, - to=[key_email], - language_code=request_obj.preferred_language, - ) + email_context = { + 'FULL_NAME': display_name, + 'VORNAME': first_name, + 'NACHNAME': last_name, + 'DEPARTMENT': request_obj.department or '-', + 'CONTRACT_START': request_obj.contract_start, + 'EMAIL': request_obj.work_email, + 'REQUESTED_BY': request_obj.onboarded_by_email or '-', + 'BUSINESS_CARD_NAME': request_obj.business_card_name or display_name, + 'BUSINESS_CARD_TITLE': request_obj.business_card_title or '-', + 'BUSINESS_CARD_EMAIL': request_obj.business_card_email or request_obj.work_email, + 'BUSINESS_CARD_PHONE': request_obj.business_card_phone or '-', + 'PDF_LINK': settings.ONBOARDING_SHARED_PDF_LINK, + } - if request_obj.onboarded_by_email: _send_templated_email( - template_key='onboarding_reference', + template_key='onboarding_it', context=email_context, - to=[request_obj.onboarded_by_email], + to=[it_email], attachments=[pdf_path], language_code=request_obj.preferred_language, ) + _send_templated_email( + template_key='onboarding_general_info', + context=email_context, + to=[general_info_email], + language_code=request_obj.preferred_language, + ) - _apply_notification_rules( - event_type='onboarding', - request_obj=request_obj, - context=email_context, - pdf_path=pdf_path, - ) + if request_obj.order_business_cards: + _send_templated_email( + template_key='onboarding_business_card', + context=email_context, + to=[business_card_email], + language_code=request_obj.preferred_language, + ) - _schedule_welcome_email(request_obj) + if 'HR Works' in request_obj.needed_accesses: + _send_templated_email( + template_key='onboarding_hr_works', + context=email_context, + to=[hr_works_email], + language_code=request_obj.preferred_language, + ) - upload_to_nextcloud(pdf_path, Path(pdf_path).name) + if 'Schlüssel' in request_obj.needed_devices: + _send_templated_email( + template_key='onboarding_key', + context=email_context, + to=[key_email], + language_code=request_obj.preferred_language, + ) + + if request_obj.onboarded_by_email: + _send_templated_email( + template_key='onboarding_reference', + context=email_context, + to=[request_obj.onboarded_by_email], + attachments=[pdf_path], + language_code=request_obj.preferred_language, + ) + + _apply_notification_rules( + event_type='onboarding', + request_obj=request_obj, + context=email_context, + pdf_path=pdf_path, + ) + + _schedule_welcome_email(request_obj) + + upload_to_nextcloud(pdf_path, Path(pdf_path).name) + request_obj.processing_status = 'completed' + request_obj.last_error = '' + request_obj.save(update_fields=['processing_status', 'last_error']) + except Exception as exc: + request_obj.processing_status = 'failed' + request_obj.last_error = str(exc) + request_obj.save(update_fields=['processing_status', 'last_error']) + raise @shared_task def process_offboarding_request(offboarding_request_id: int) -> None: request_obj = OffboardingRequest.objects.get(id=offboarding_request_id) - it_email, general_info_email, _, hr_works_email, _ = _resolve_workflow_emails() + request_obj.processing_status = 'processing' + request_obj.last_error = '' + request_obj.save(update_fields=['processing_status', 'last_error']) + try: + it_email, general_info_email, _, hr_works_email, _ = _resolve_workflow_emails() - pdf_path = _generate_offboarding_pdf(request_obj) - request_obj.generated_pdf_path = str(pdf_path) - request_obj.save(update_fields=['generated_pdf_path']) + pdf_path = _generate_offboarding_pdf(request_obj) + request_obj.generated_pdf_path = str(pdf_path) + request_obj.save(update_fields=['generated_pdf_path']) - email_context = { - 'FULL_NAME': request_obj.full_name, - 'DEPARTMENT': request_obj.department or '-', - 'LAST_WORKING_DAY': request_obj.last_working_day, - 'REQUESTED_BY': request_obj.requested_by_email, - 'EMAIL': request_obj.work_email, - } + email_context = { + 'FULL_NAME': request_obj.full_name, + 'DEPARTMENT': request_obj.department or '-', + 'LAST_WORKING_DAY': request_obj.last_working_day, + 'REQUESTED_BY': request_obj.requested_by_email, + 'EMAIL': request_obj.work_email, + } - _send_templated_email( - template_key='offboarding_it', - context=email_context, - to=[it_email], - attachments=[pdf_path], - language_code=request_obj.preferred_language, - ) - _send_templated_email( - template_key='offboarding_general_info', - context=email_context, - to=[general_info_email], - language_code=request_obj.preferred_language, - ) - - had_hr_works = OnboardingRequest.objects.filter( - work_email=request_obj.work_email, - needed_accesses__icontains='HR Works', - ).exists() - if had_hr_works: _send_templated_email( - template_key='offboarding_hr_works_disable', + template_key='offboarding_it', context=email_context, - to=[hr_works_email], + to=[it_email], + attachments=[pdf_path], + language_code=request_obj.preferred_language, + ) + _send_templated_email( + template_key='offboarding_general_info', + context=email_context, + to=[general_info_email], language_code=request_obj.preferred_language, ) - _send_templated_email( - template_key='offboarding_reference', - context=email_context, - to=[request_obj.requested_by_email], - attachments=[pdf_path], - language_code=request_obj.preferred_language, - ) + had_hr_works = OnboardingRequest.objects.filter( + work_email=request_obj.work_email, + needed_accesses__icontains='HR Works', + ).exists() + if had_hr_works: + _send_templated_email( + template_key='offboarding_hr_works_disable', + context=email_context, + to=[hr_works_email], + language_code=request_obj.preferred_language, + ) - _apply_notification_rules( - event_type='offboarding', - request_obj=request_obj, - context=email_context, - pdf_path=pdf_path, - ) + _send_templated_email( + template_key='offboarding_reference', + context=email_context, + to=[request_obj.requested_by_email], + attachments=[pdf_path], + language_code=request_obj.preferred_language, + ) - upload_to_nextcloud(pdf_path, Path(pdf_path).name) + _apply_notification_rules( + event_type='offboarding', + request_obj=request_obj, + context=email_context, + pdf_path=pdf_path, + ) + + upload_to_nextcloud(pdf_path, Path(pdf_path).name) + request_obj.processing_status = 'completed' + request_obj.last_error = '' + request_obj.save(update_fields=['processing_status', 'last_error']) + except Exception as exc: + request_obj.processing_status = 'failed' + request_obj.last_error = str(exc) + request_obj.save(update_fields=['processing_status', 'last_error']) + raise @shared_task diff --git a/backend/workflows/templates/workflows/developer_handbook.html b/backend/workflows/templates/workflows/developer_handbook.html index ed13668..20269da 100644 --- a/backend/workflows/templates/workflows/developer_handbook.html +++ b/backend/workflows/templates/workflows/developer_handbook.html @@ -189,6 +189,8 @@ docker compose exec -T web python manage.py run_staging_e2e_check
submitted → processing → completed/failed.submitted, and enqueue the appropriate Celery task again.submitted, processing, completed, failed). Failed requests expose the last error and can be retried from the dashboard.PDF erzeugen, Neu erzeugen, and PDF öffnen actions directly on onboarding rows in the Requests Dashboard.