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.
 
 
 
 
 
 

63 lines
2.2 KiB

# -*- coding: utf-8 -*-
from settings.models import settings_dict, Setting
from django.conf import settings
from functions.translate import get_translated_fields
def fill_missing_languages(obj):
all_langs = [code for code, lang in settings.LANGUAGES]
obj_langs = obj.get_available_languages()
missing_languages = list(set(all_langs) - set(obj_langs))
if missing_languages:
# get first Translation object (require)
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()
#from city.models import City
#city = City.objects.get(id=37)
#city.save()
def fill_meta_information(obj):
s_list = settings_dict.get(obj.__class__.__name__)
if s_list:
for code, lang in settings.LANGUAGES:
fields_with_setting = {setting.get('field_name'): Setting.objects.get(key=setting['key']).get_value(code) \
for setting in s_list if setting.get('type') =='transl'}
tr = obj._meta.translations_model.objects.get(language_code=code, master__id=getattr(obj, 'id'))
do_save = False
for field, value in fields_with_setting.iteritems():
if getattr(tr, field) == '':
setattr(tr, field, value)
do_save = True
if do_save:
tr.save()
print 'save'
#return fields_with_setting
"""
s_list = settings_dict.get(obj.__class__.__name__)
return s_list
for s in s_list:
setting = Setting.objects.get(key=s.get('key'))
if setting.type != 'transl':
setattr(obj, s.get('field_name'), setting.get_value())
else:
for code, lang in settings.LANGUAGES:
tr = obj._meta.translations_model.objects.get(language_code=code, master__id=getattr(obj, 'id'))
setattr(tr, s.get('field_name'), setting.get_value(code))
tr.save()
"""