from __future__ import annotations from pathlib import Path from django.conf import settings from django.templatetags.static import static from .models import PortalBranding def get_portal_branding() -> PortalBranding: branding, _ = PortalBranding.objects.get_or_create( name='Default', defaults={ 'portal_title': 'TUBCO Onboarding & Offboarding Portal', 'company_name': 'TUBCO', 'support_email': 'info@tub.co', 'default_language': 'de', 'primary_color': '#000078', 'secondary_color': '#c0002b', }, ) return branding def get_portal_logo_url() -> str: branding = get_portal_branding() if branding.logo_image: try: return branding.logo_image.url except ValueError: pass return static('workflows/img/tubco-logo.svg') def get_portal_letterhead_path() -> Path: branding = get_portal_branding() if branding.pdf_letterhead: try: candidate = Path(branding.pdf_letterhead.path) if candidate.exists(): return candidate except (ValueError, NotImplementedError): pass return settings.PDF_TEMPLATES_DIR / 'templates.pdf' def get_branding_context() -> dict[str, object]: branding = get_portal_branding() return { 'portal_branding': branding, 'portal_title': branding.portal_title, 'portal_company_name': branding.company_name, 'portal_support_email': branding.support_email, 'portal_default_language': branding.default_language, 'portal_primary_color': branding.primary_color, 'portal_secondary_color': branding.secondary_color, 'portal_logo_url': get_portal_logo_url(), 'portal_has_custom_logo': bool(branding.logo_image), 'portal_has_custom_letterhead': bool(branding.pdf_letterhead), } def get_branding_email_copy() -> dict[str, str]: branding = get_portal_branding() company_name = (branding.company_name or 'TUBCO').strip() portal_title = (branding.portal_title or f'{company_name} Portal').strip() return { 'company_name': company_name, 'portal_title': portal_title, 'support_email': (branding.support_email or '').strip(), } def get_default_notification_templates() -> dict[str, dict[str, str]]: from copy import deepcopy from .tasks import DEFAULT_NOTIFICATION_TEMPLATES templates = deepcopy(DEFAULT_NOTIFICATION_TEMPLATES) company_name = get_branding_email_copy()['company_name'] welcome = templates.get('onboarding_welcome') if welcome: welcome['subject'] = f'Willkommen bei {company_name}, {{ VORNAME }}' welcome['subject_en'] = f'Welcome to {company_name}, {{ VORNAME }}' welcome['body'] = ( 'Hallo {{ FULL_NAME }},\n\n' f'herzlich willkommen bei {company_name}.\n' 'Wir freuen uns sehr, dass du ab dem {{ CONTRACT_START }} unser Team in der Abteilung {{ DEPARTMENT }} verstärkst.\n\n' 'Deine dienstliche E-Mail-Adresse lautet: {{ EMAIL }}.\n' 'Im Anhang findest du deine Onboarding-Unterlagen als PDF.\n\n' 'Wenn du Fragen hast, melde dich gerne jederzeit.\n\n' 'Viele Grüße\n' f'{company_name} IT' ) welcome['body_en'] = ( 'Hello {{ FULL_NAME }},\n\n' f'welcome to {company_name}.\n' 'We are very happy that you will join our {{ DEPARTMENT }} team starting on {{ CONTRACT_START }}.\n\n' 'Your work email address is: {{ EMAIL }}.\n' 'You will find your onboarding documents attached as a PDF.\n\n' 'If you have any questions, feel free to contact us anytime.\n\n' 'Best regards,\n' f'{company_name} IT' ) return templates