Revision: 152
Author: eschler
Date: Thu Jul 12 02:03:12 2012
Log: Added workaround for issue 33: Using a non default language admin
leads to confusing original field values. Done by forcing the default
language in save_model.
http://code.google.com/p/django-modeltranslation/source/detail?r=152
Modified:
/trunk/modeltranslation/admin.py
=======================================
--- /trunk/modeltranslation/admin.py Tue Jul 10 07:59:24 2012
+++ /trunk/modeltranslation/admin.py Thu Jul 12 02:03:12 2012
@@ -4,6 +4,7 @@
from django.contrib import admin
from django.contrib.admin.options import BaseModelAdmin, InlineModelAdmin
from django.contrib.contenttypes import generic
+from django.utils import translation
from modeltranslation.settings import DEFAULT_LANGUAGE
from modeltranslation.translator import translator
@@ -219,7 +220,7 @@
def save_model(self, request, obj, form, change):
# Rule is: 3. Assigning a value to a translation field of the
default
# language also updates the original field.
- # Ensure that an empty default language field value clears the
default
+ # Ensure that an empty default language field value clears the
original
# field. See issue 47 for details.
for k, v in self.trans_opts.localized_fieldnames.items():
if getattr(obj, k):
@@ -228,7 +229,13 @@
if not getattr(obj, default_lang_fieldname):
# TODO: Handle null values
setattr(obj, k, '')
+ # HACK: Force default language for save
+ # See issue 33 for details.
+ current_lang = translation.get_language()
+ translation.activate(DEFAULT_LANGUAGE)
super(TranslationAdmin, self).save_model(request, obj, form,
change)
+ # Restore the former current language, just in case.
+ translation.activate(current_lang)
class TranslationInlineModelAdmin(TranslationBaseModelAdmin,
InlineModelAdmin):