diff --git a/apps/utils/models.py b/apps/utils/models.py index 00772f72..07891330 100644 --- a/apps/utils/models.py +++ b/apps/utils/models.py @@ -70,25 +70,20 @@ def get_default_locale(): def translate_field(self, field_name, toggle_field_name=None): def translate(self): field = getattr(self, field_name) - locale_requested = to_locale(get_language()) - has_toggler = hasattr(self, toggle_field_name) - is_active = getattr(self, toggle_field_name, {}).get(locale_requested) if toggle_field_name else None + toggler = getattr(self, toggle_field_name, None) if isinstance(field, dict): - if has_toggler and not is_active: - value = None - if locale_requested in field: - field.pop(locale_requested) - try: - return value or next(iter(field.values())) - except StopIteration: - return None - else: - value = field.get(locale_requested) + if toggler: + field = {locale: v for locale, v in field.items() if toggler.get(locale) in [True, 'True', 'true']} + value = field.get(to_locale(get_language())) # fallback if value is None: value = field.get(get_default_locale()) if value is None: - value = field.get(next(iter(field.keys()), None)) + try: + value = next(iter(field.values())) + except StopIteration: + # field values are absent + return None return value return None return translate