snapshot: preserve integrations controls and status UX cleanup
This commit is contained in:
@@ -8,7 +8,7 @@ from celery import shared_task
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.conf import settings
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext as _, get_language
|
||||
from django.utils.translation import gettext as _, get_language, override
|
||||
from jinja2 import Template
|
||||
from pypdf import PageObject, PdfReader, PdfWriter
|
||||
from xhtml2pdf import pisa
|
||||
@@ -570,88 +570,64 @@ def _build_intro_sections_from_admin(request_obj: OnboardingRequest, language_co
|
||||
|
||||
def build_intro_sections_for_request(request_obj: OnboardingRequest, language_code: str | None = None) -> list[dict]:
|
||||
lang = _normalized_lang(language_code or get_language())
|
||||
section_titles = {
|
||||
'de': {
|
||||
'workplace': 'Geräte und Arbeitsplatz',
|
||||
'accounts': 'Konten und Berechtigungen',
|
||||
'software': 'Software und Tools',
|
||||
'process': 'Prozesse und Hinweise',
|
||||
},
|
||||
'en': {
|
||||
'workplace': 'Devices and workplace',
|
||||
'accounts': 'Accounts and permissions',
|
||||
'software': 'Software and tools',
|
||||
'process': 'Processes and notes',
|
||||
},
|
||||
}
|
||||
devices = _split_multiline(request_obj.needed_devices)
|
||||
software = _split_multiline(request_obj.needed_software)
|
||||
accesses = _split_multiline(request_obj.needed_accesses)
|
||||
groups = _split_multiline(request_obj.needed_workspace_groups)
|
||||
resources = _split_multiline(request_obj.needed_resources)
|
||||
extra_hardware = _split_multiline(request_obj.additional_hardware)
|
||||
extra_software = _split_multiline(request_obj.additional_software)
|
||||
group_mailboxes = _split_multiline(request_obj.group_mailboxes)
|
||||
with override(lang):
|
||||
section_titles = {
|
||||
'workplace': _('Geräte und Arbeitsplatz'),
|
||||
'accounts': _('Konten und Berechtigungen'),
|
||||
'software': _('Software und Tools'),
|
||||
'process': _('Prozesse und Hinweise'),
|
||||
}
|
||||
devices = _split_multiline(request_obj.needed_devices)
|
||||
software = _split_multiline(request_obj.needed_software)
|
||||
accesses = _split_multiline(request_obj.needed_accesses)
|
||||
groups = _split_multiline(request_obj.needed_workspace_groups)
|
||||
resources = _split_multiline(request_obj.needed_resources)
|
||||
extra_hardware = _split_multiline(request_obj.additional_hardware)
|
||||
extra_software = _split_multiline(request_obj.additional_software)
|
||||
group_mailboxes = _split_multiline(request_obj.group_mailboxes)
|
||||
|
||||
workplace_items = []
|
||||
for item in devices:
|
||||
if lang == 'en':
|
||||
workplace_items.append(f'{item} handed over and basic functions explained')
|
||||
else:
|
||||
workplace_items.append(f'{item} übergeben und Grundfunktionen erklärt')
|
||||
for item in resources:
|
||||
if lang == 'en':
|
||||
workplace_items.append(f'{item} shown or usage explained')
|
||||
else:
|
||||
workplace_items.append(f'{item} gezeigt bzw. Nutzung erklärt')
|
||||
if request_obj.phone_number:
|
||||
if lang == 'en':
|
||||
workplace_items.append(f'Phone number / direct extension explained: {request_obj.phone_number}')
|
||||
else:
|
||||
workplace_items.append(f'Telefonnummer / Direktwahl erklärt: {request_obj.phone_number}')
|
||||
if not workplace_items:
|
||||
workplace_items.append('Workplace, devices, and general usage reviewed' if lang == 'en' else 'Arbeitsplatz, Geräte und allgemeine Nutzung besprochen')
|
||||
workplace_items = []
|
||||
for item in devices:
|
||||
workplace_items.append(_('%(item)s übergeben und Grundfunktionen erklärt') % {'item': item})
|
||||
for item in resources:
|
||||
workplace_items.append(_('%(item)s gezeigt bzw. Nutzung erklärt') % {'item': item})
|
||||
if request_obj.phone_number:
|
||||
workplace_items.append(_('Telefonnummer / Direktwahl erklärt: %(value)s') % {'value': request_obj.phone_number})
|
||||
if not workplace_items:
|
||||
workplace_items.append(_('Arbeitsplatz, Geräte und allgemeine Nutzung besprochen'))
|
||||
|
||||
account_items = [f'{item} access explained' if lang == 'en' else f'{item} Zugang erklärt' for item in accesses]
|
||||
account_items.extend([f'{item} group / permission explained' if lang == 'en' else f'{item} Gruppe / Berechtigung erläutert' for item in groups])
|
||||
if request_obj.work_email:
|
||||
account_items.insert(0, f'Work email address explained: {request_obj.work_email}' if lang == 'en' else f'Dienstliche E-Mail-Adresse erläutert: {request_obj.work_email}')
|
||||
if group_mailboxes:
|
||||
account_items.extend([f'Group mailbox explained: {item}' if lang == 'en' else f'Gruppenpostfach erklärt: {item}' for item in group_mailboxes])
|
||||
if not account_items:
|
||||
account_items.append('Accesses, accounts, and login logic reviewed' if lang == 'en' else 'Zugänge, Konten und Anmeldelogik besprochen')
|
||||
account_items = [_('%(item)s Zugang erklärt') % {'item': item} for item in accesses]
|
||||
account_items.extend([_('%(item)s Gruppe / Berechtigung erläutert') % {'item': item} for item in groups])
|
||||
if request_obj.work_email:
|
||||
account_items.insert(0, _('Dienstliche E-Mail-Adresse erläutert: %(value)s') % {'value': request_obj.work_email})
|
||||
if group_mailboxes:
|
||||
account_items.extend([_('Gruppenpostfach erklärt: %(item)s') % {'item': item} for item in group_mailboxes])
|
||||
if not account_items:
|
||||
account_items.append(_('Zugänge, Konten und Anmeldelogik besprochen'))
|
||||
|
||||
software_items = [f'{item} introduction completed' if lang == 'en' else f'{item} Einführung durchgeführt' for item in software]
|
||||
software_items.extend([f'{item} discussed additionally' if lang == 'en' else f'{item} zusätzlich besprochen' for item in extra_software])
|
||||
if not software_items:
|
||||
software_items.append('Required standard software and daily usage explained' if lang == 'en' else 'Benötigte Standardsoftware und tägliche Nutzung erklärt')
|
||||
software_items = [_('%(item)s Einführung durchgeführt') % {'item': item} for item in software]
|
||||
software_items.extend([_('%(item)s zusätzlich besprochen') % {'item': item} for item in extra_software])
|
||||
if not software_items:
|
||||
software_items.append(_('Benötigte Standardsoftware und tägliche Nutzung erklärt'))
|
||||
|
||||
process_items = (
|
||||
[
|
||||
'Password rules and secure handling reviewed',
|
||||
'File storage, Nextcloud, and sharing explained',
|
||||
'Communication channels and support process explained',
|
||||
process_items = [
|
||||
_('Passwortregeln und sicherer Umgang besprochen'),
|
||||
_('Dateiablage, Nextcloud und Freigaben erklärt'),
|
||||
_('Kommunikationswege und Support-Prozess erklärt'),
|
||||
]
|
||||
if lang == 'en'
|
||||
else [
|
||||
'Passwortregeln und sicherer Umgang besprochen',
|
||||
'Dateiablage, Nextcloud und Freigaben erklärt',
|
||||
'Kommunikationswege und Support-Prozess erklärt',
|
||||
]
|
||||
)
|
||||
if extra_hardware:
|
||||
process_items.extend([f'{item} discussed as additional equipment' if lang == 'en' else f'{item} als zusätzliche Ausstattung besprochen' for item in extra_hardware])
|
||||
if request_obj.additional_access_text:
|
||||
process_items.extend([f'Additional access discussed: {item}' if lang == 'en' else f'Zusätzlicher Zugang besprochen: {item}' for item in _split_multiline(request_obj.additional_access_text)])
|
||||
if request_obj.successor_name:
|
||||
process_items.append(f'Handover / successor context reviewed: {request_obj.successor_name}' if lang == 'en' else f'Übergabe-/Nachfolgekontext besprochen: {request_obj.successor_name}')
|
||||
if extra_hardware:
|
||||
process_items.extend([_('%(item)s als zusätzliche Ausstattung besprochen') % {'item': item} for item in extra_hardware])
|
||||
if request_obj.additional_access_text:
|
||||
process_items.extend([_('Zusätzlicher Zugang besprochen: %(item)s') % {'item': item} for item in _split_multiline(request_obj.additional_access_text)])
|
||||
if request_obj.successor_name:
|
||||
process_items.append(_('Übergabe-/Nachfolgekontext besprochen: %(value)s') % {'value': request_obj.successor_name})
|
||||
|
||||
custom_intro_items = _build_intro_sections_from_admin(request_obj, lang)
|
||||
intro_sections_raw = [
|
||||
('workplace', section_titles.get(lang, section_titles['de'])['workplace'], workplace_items),
|
||||
('accounts', section_titles.get(lang, section_titles['de'])['accounts'], account_items),
|
||||
('software', section_titles.get(lang, section_titles['de'])['software'], software_items),
|
||||
('process', section_titles.get(lang, section_titles['de'])['process'], process_items),
|
||||
('workplace', section_titles['workplace'], workplace_items),
|
||||
('accounts', section_titles['accounts'], account_items),
|
||||
('software', section_titles['software'], software_items),
|
||||
('process', section_titles['process'], process_items),
|
||||
]
|
||||
|
||||
sections = []
|
||||
|
||||
Reference in New Issue
Block a user