web/lib/modeltranslation/management/commands/update_translation_fields.py
changeset 5 10b1f6d8a5d2
equal deleted inserted replaced
4:b77683731f25 5:10b1f6d8a5d2
       
     1 
       
     2 from django.conf import settings
       
     3 from django.core.management.base import BaseCommand, CommandError, NoArgsCommand
       
     4 
       
     5 from modeltranslation.translator import translator
       
     6 from modeltranslation.utils import build_localized_fieldname
       
     7 
       
     8 class Command(NoArgsCommand):
       
     9     help = 'Updates the default translation fields of all or the specified'\
       
    10            'translated application using the value of the original field.'
       
    11     # args = '[app_name]'
       
    12         
       
    13     def handle(self, **options):        
       
    14         default_lang = settings.LANGUAGES[0][0]        
       
    15         print "Using default language:", default_lang        
       
    16         
       
    17         for model, trans_opts in translator._registry.items():            
       
    18             print "Updating data of model '%s'" % model   
       
    19             for obj in model.objects.all():                            
       
    20                 for fieldname in trans_opts.fields:
       
    21                     def_lang_fieldname = build_localized_fieldname(fieldname, default_lang)
       
    22                     # print "setting %s from %s to %s." % (def_lang_fieldname, fieldname, obj.__dict__[fieldname])
       
    23                     if not getattr(obj, def_lang_fieldname):
       
    24                         setattr(obj, def_lang_fieldname, obj.__dict__[fieldname])
       
    25                 obj.save()