translated fields work out

This commit is contained in:
Kuroshini 2019-12-17 00:26:16 +03:00
parent 5d69f2a5e7
commit 2863a338e1

View File

@ -67,11 +67,17 @@ def get_default_locale():
settings.FALLBACK_LOCALE
def translate_field(self, field_name):
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
if isinstance(field, dict):
value = field.get(to_locale(get_language()))
if has_toggler and not is_active:
value = None
else:
value = field.get(locale_requested)
# fallback
if value is None:
value = field.get(get_default_locale())
@ -114,7 +120,7 @@ class TranslatedFieldsMixin:
field_name = field.name
if isinstance(field, TJSONField):
setattr(cls, f'{field.name}_translated',
property(translate_field(self, field_name)))
property(translate_field(self, field_name, f'locale_to_{field_name}_is_active')))
setattr(cls, f'{field_name}_indexing',
property(index_field(self, field_name)))