snapshot: preserve handbook, bilingual phase 2, and logo updates

This commit is contained in:
Md Bayazid Bostame
2026-03-24 12:25:43 +01:00
parent 0f285aa2cf
commit 4d3c7bdf6e
26 changed files with 625 additions and 66 deletions

View File

@@ -1,4 +1,5 @@
from django.db import models
from django.utils.translation import get_language
class EmployeeProfile(models.Model):
@@ -98,6 +99,7 @@ class FormOption(models.Model):
category = models.CharField(max_length=40, choices=CATEGORY_CHOICES)
label = models.CharField(max_length=255)
label_en = models.CharField(max_length=255, blank=True)
value = models.CharField(max_length=255, blank=True)
sort_order = models.PositiveIntegerField(default=0)
is_active = models.BooleanField(default=True)
@@ -109,6 +111,12 @@ class FormOption(models.Model):
def __str__(self) -> str:
return f"{self.get_category_display()}: {self.label}"
def translated_label(self, language_code: str | None = None) -> str:
lang = (language_code or get_language() or 'de').split('-')[0]
if lang == 'en' and self.label_en.strip():
return self.label_en.strip()
return self.label.strip()
class FormFieldConfig(models.Model):
PAGE_CHOICES = [
@@ -130,7 +138,9 @@ class FormFieldConfig(models.Model):
is_required = models.BooleanField(null=True, blank=True, default=None)
page_key = models.CharField(max_length=20, blank=True, default='', choices=PAGE_CHOICES)
label_override = models.CharField(max_length=255, blank=True)
label_override_en = models.CharField(max_length=255, blank=True)
help_text_override = models.TextField(blank=True)
help_text_override_en = models.TextField(blank=True)
class Meta:
ordering = ['form_type', 'sort_order', 'field_name']
@@ -141,6 +151,18 @@ class FormFieldConfig(models.Model):
def __str__(self) -> str:
return f'{self.get_form_type_display()}: {self.field_name}'
def translated_label_override(self, language_code: str | None = None) -> str:
lang = (language_code or get_language() or 'de').split('-')[0]
if lang == 'en' and self.label_override_en.strip():
return self.label_override_en.strip()
return self.label_override.strip()
def translated_help_text_override(self, language_code: str | None = None) -> str:
lang = (language_code or get_language() or 'de').split('-')[0]
if lang == 'en' and self.help_text_override_en.strip():
return self.help_text_override_en.strip()
return self.help_text_override.strip()
class NotificationTemplate(models.Model):
TEMPLATE_CHOICES = [
@@ -249,6 +271,7 @@ class IntroChecklistItem(models.Model):
section = models.CharField(max_length=30, choices=SECTION_CHOICES)
label = models.CharField(max_length=255)
label_en = models.CharField(max_length=255, blank=True)
sort_order = models.PositiveIntegerField(default=0)
is_active = models.BooleanField(default=True)
condition_field = models.CharField(max_length=80, blank=True)
@@ -261,6 +284,12 @@ class IntroChecklistItem(models.Model):
def __str__(self) -> str:
return f'{self.get_section_display()}: {self.label}'
def translated_label(self, language_code: str | None = None) -> str:
lang = (language_code or get_language() or 'de').split('-')[0]
if lang == 'en' and self.label_en.strip():
return self.label_en.strip()
return self.label.strip()
class OnboardingIntroductionSession(models.Model):
STATUS_CHOICES = [