snapshot: preserve extended branding layer and branding UI polish
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
from email.utils import formataddr
|
||||
|
||||
from django.conf import settings
|
||||
from django.templatetags.static import static
|
||||
from django.utils.translation import get_language
|
||||
|
||||
from .models import PortalBranding
|
||||
|
||||
@@ -16,6 +18,12 @@ def get_portal_branding() -> PortalBranding:
|
||||
'company_name': 'TUBCO',
|
||||
'company_domain': 'tub.co',
|
||||
'support_email': 'info@tub.co',
|
||||
'sender_display_name': 'TUBCO',
|
||||
'login_subtitle': 'Bitte melden Sie sich mit Ihrem Benutzerkonto an.',
|
||||
'footer_text': 'TUBCO Onboarding & Offboarding Portal',
|
||||
'footer_text_en': 'TUBCO Onboarding & Offboarding Portal',
|
||||
'legal_notice': '',
|
||||
'legal_notice_en': '',
|
||||
'default_language': 'de',
|
||||
'primary_color': '#000078',
|
||||
'secondary_color': '#c0002b',
|
||||
@@ -40,6 +48,16 @@ def get_portal_logo_url() -> str:
|
||||
return static('workflows/img/tubco-logo.svg')
|
||||
|
||||
|
||||
def get_portal_favicon_url() -> str:
|
||||
branding = get_portal_branding()
|
||||
if branding.favicon_image:
|
||||
try:
|
||||
return branding.favicon_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:
|
||||
@@ -54,18 +72,31 @@ def get_portal_letterhead_path() -> Path:
|
||||
|
||||
def get_branding_context() -> dict[str, object]:
|
||||
branding = get_portal_branding()
|
||||
lang = (get_language() or branding.default_language or 'de').split('-')[0]
|
||||
footer_text = (branding.footer_text_en or '').strip() if lang == 'en' else ''
|
||||
legal_notice = (branding.legal_notice_en or '').strip() if lang == 'en' else ''
|
||||
if not footer_text:
|
||||
footer_text = (branding.footer_text or branding.portal_title).strip()
|
||||
if not legal_notice:
|
||||
legal_notice = (branding.legal_notice or '').strip()
|
||||
return {
|
||||
'portal_branding': branding,
|
||||
'portal_title': branding.portal_title,
|
||||
'portal_company_name': branding.company_name,
|
||||
'portal_email_domain': get_company_email_domain(),
|
||||
'portal_support_email': branding.support_email,
|
||||
'portal_sender_display_name': branding.sender_display_name or branding.company_name,
|
||||
'portal_login_subtitle': branding.login_subtitle,
|
||||
'portal_footer_text': footer_text,
|
||||
'portal_legal_notice': legal_notice,
|
||||
'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_favicon_url': get_portal_favicon_url(),
|
||||
'portal_has_custom_logo': bool(branding.logo_image),
|
||||
'portal_has_custom_letterhead': bool(branding.pdf_letterhead),
|
||||
'portal_has_custom_favicon': bool(branding.favicon_image),
|
||||
}
|
||||
|
||||
|
||||
@@ -78,9 +109,20 @@ def get_branding_email_copy() -> dict[str, str]:
|
||||
'company_domain': get_company_email_domain(),
|
||||
'portal_title': portal_title,
|
||||
'support_email': (branding.support_email or '').strip(),
|
||||
'sender_display_name': (branding.sender_display_name or company_name).strip(),
|
||||
}
|
||||
|
||||
|
||||
def get_branded_from_email(email_address: str | None) -> str | None:
|
||||
address = (email_address or '').strip()
|
||||
if not address:
|
||||
return None
|
||||
display_name = (get_branding_email_copy()['sender_display_name'] or '').strip()
|
||||
if not display_name:
|
||||
return address
|
||||
return formataddr((display_name, address))
|
||||
|
||||
|
||||
def get_default_notification_templates() -> dict[str, dict[str, str]]:
|
||||
from copy import deepcopy
|
||||
|
||||
|
||||
Reference in New Issue
Block a user