You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
869 B
31 lines
869 B
# -*- coding: utf-8 -*-
|
|
from django.conf import settings
|
|
from functions.translate import get_translated_fields
|
|
|
|
|
|
def fill_missing_languages(obj):
|
|
"""
|
|
looking for missing languages
|
|
and fill translated fields with first available language
|
|
|
|
uses in post_save signal
|
|
"""
|
|
|
|
# what languages must be
|
|
all_langs = [code for code, lang in settings.LANGUAGES]
|
|
# what languages are
|
|
obj_langs = obj.get_available_languages()
|
|
missing_languages = list(set(all_langs) - set(obj_langs))
|
|
# get first Translation object
|
|
translation = obj.translations.all()[0]
|
|
|
|
fields = get_translated_fields(obj)
|
|
|
|
for code in missing_languages:
|
|
# translate
|
|
obj.translate(code)
|
|
# go through all fields and set value
|
|
for field in fields:
|
|
setattr(obj, field, getattr(translation, field))
|
|
|
|
obj.save() |