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
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()
|
|
""" |