snapshot: preserve app registry and branding domain foundation
This commit is contained in:
@@ -29,6 +29,7 @@ class PortalBranding(models.Model):
|
||||
name = models.CharField(max_length=80, default='Default', unique=True)
|
||||
portal_title = models.CharField(max_length=255, default='TUBCO Onboarding & Offboarding Portal')
|
||||
company_name = models.CharField(max_length=255, default='TUBCO')
|
||||
company_domain = models.CharField(max_length=120, blank=True, default='tub.co')
|
||||
support_email = models.EmailField(blank=True, default='info@tub.co')
|
||||
default_language = models.CharField(
|
||||
max_length=10,
|
||||
@@ -59,6 +60,54 @@ class PortalBranding(models.Model):
|
||||
return self.portal_title or self.company_name or self.name
|
||||
|
||||
|
||||
class PortalAppConfig(models.Model):
|
||||
SECTION_APP = 'app'
|
||||
SECTION_PLATFORM = 'platform'
|
||||
SECTION_ADMIN = 'admin'
|
||||
SECTION_CHOICES = [
|
||||
(SECTION_APP, _('Apps')),
|
||||
(SECTION_PLATFORM, _('Platform Apps')),
|
||||
(SECTION_ADMIN, _('Admin Apps')),
|
||||
]
|
||||
|
||||
key = models.CharField(max_length=80, unique=True)
|
||||
section = models.CharField(max_length=20, choices=SECTION_CHOICES, default=SECTION_APP)
|
||||
sort_order = models.PositiveIntegerField(default=0)
|
||||
is_enabled = models.BooleanField(default=True)
|
||||
title_override = models.CharField(max_length=255, blank=True)
|
||||
title_override_en = models.CharField(max_length=255, blank=True)
|
||||
description_override = models.TextField(blank=True)
|
||||
description_override_en = models.TextField(blank=True)
|
||||
action_label_override = models.CharField(max_length=255, blank=True)
|
||||
action_label_override_en = models.CharField(max_length=255, blank=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Meta:
|
||||
ordering = ['section', 'sort_order', 'key']
|
||||
verbose_name = 'Portal App'
|
||||
verbose_name_plural = 'Portal Apps'
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.key
|
||||
|
||||
def _translated_value(self, field_name: str, language_code: str | None = None) -> str:
|
||||
lang = (language_code or get_language() or 'de').split('-')[0]
|
||||
if lang == 'en':
|
||||
english_value = (getattr(self, f'{field_name}_en', '') or '').strip()
|
||||
if english_value:
|
||||
return english_value
|
||||
return (getattr(self, field_name, '') or '').strip()
|
||||
|
||||
def translated_title_override(self, language_code: str | None = None) -> str:
|
||||
return self._translated_value('title_override', language_code)
|
||||
|
||||
def translated_description_override(self, language_code: str | None = None) -> str:
|
||||
return self._translated_value('description_override', language_code)
|
||||
|
||||
def translated_action_label_override(self, language_code: str | None = None) -> str:
|
||||
return self._translated_value('action_label_override', language_code)
|
||||
|
||||
|
||||
class AdminAuditLog(models.Model):
|
||||
actor = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
|
||||
Reference in New Issue
Block a user