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