snapshot: preserve branding foundation and platform owner split
This commit is contained in:
106
backend/workflows/branding.py
Normal file
106
backend/workflows/branding.py
Normal file
@@ -0,0 +1,106 @@
|
||||
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
|
||||
Reference in New Issue
Block a user