Skip to content

Commit

Permalink
only save locales we know about (bug 606712)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeff Balogh committed Oct 26, 2010
1 parent c413bf4 commit 8e451cb
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
4 changes: 3 additions & 1 deletion apps/translations/fields.py
@@ -1,4 +1,5 @@
from django import forms
from django.conf import settings
from django.db import models
from django.db.models.fields import related
from django.utils import translation as translation_utils
Expand Down Expand Up @@ -119,7 +120,6 @@ def __set__(self, instance, value):
elif hasattr(value, 'items'):
value = self.translation_from_dict(instance, lang, value)


# Don't let this be set to None, because Django will then blank out the
# foreign key for this object. That's incorrect for translations.
if value is not None:
Expand Down Expand Up @@ -160,6 +160,8 @@ def translation_from_dict(self, instance, lang, dict_):
"""
rv = None
for locale, string in dict_.items():
if locale.lower() not in settings.LANGUAGES:
continue
# The Translation is created and saved in here.
trans = self.translation_from_string(instance, locale, string)

Expand Down
12 changes: 11 additions & 1 deletion apps/translations/tests/test_models.py
Expand Up @@ -18,11 +18,12 @@
def ids(qs):
return [o.id for o in qs]


class TranslationFixturelessTestCase(test.TestCase):
"We want to be able to rollback stuff."

def test_whitespace(self):
t = Translation(localized_string=' khaaaaaan! ', id=999 )
t = Translation(localized_string=' khaaaaaan! ', id=999)
t.save()
eq_('khaaaaaan!', t.localized_string)

Expand Down Expand Up @@ -198,6 +199,15 @@ def test_update_with_dict(self):
translation.activate('fr')
trans_eq(get_model().name, 'oui', 'fr')

def test_dict_bad_locale(self):
m = TranslatedModel.objects.get(id=1)
m.name = {'de': 'oof', 'xxx': 'bam', 'es-ES': 'si'}
m.save()

ts = Translation.objects.filter(id=m.name_id)
eq_(sorted(ts.values_list('locale', flat=True)),
['de', 'en-US', 'es-ES'])

def test_widget(self):
strings = {'de': None, 'fr': 'oui'}
o = TranslatedModel.objects.get(id=1)
Expand Down

0 comments on commit 8e451cb

Please sign in to comment.