From b9d83593063b660648304be84963f12c7a9fd145 Mon Sep 17 00:00:00 2001 From: Konrad Wojas Date: Tue, 23 Jul 2013 16:07:41 +0800 Subject: [PATCH] Added MODELTRANSLATION_PREPOPULATE_LANGUAGE setting to force prepopulated fields (slugs) to use a specific language as their source --- modeltranslation/admin.py | 6 +++--- modeltranslation/settings.py | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modeltranslation/admin.py b/modeltranslation/admin.py index bc02163..7b7dd76 100644 --- a/modeltranslation/admin.py +++ b/modeltranslation/admin.py @@ -9,7 +9,7 @@ from django.contrib.contenttypes import generic # runs. The import is supposed to resolve a race condition between model import # and translation registration in production (see issue #19). import modeltranslation.models # NOQA -from modeltranslation.settings import DEFAULT_LANGUAGE +from modeltranslation.settings import DEFAULT_LANGUAGE, PREPOPULATE_LANGUAGE from modeltranslation.translator import translator from modeltranslation.utils import ( get_translation_fields, build_css_class, build_localized_fieldname, get_language, unique) @@ -130,8 +130,8 @@ class TranslationBaseModelAdmin(BaseModelAdmin): def _patch_prepopulated_fields(self): if self.prepopulated_fields: - # TODO: Perhaps allow to configure which language the slug should be based on? - lang = get_language() + # Default to the active language, unless explicitly configured + lang = PREPOPULATE_LANGUAGE or get_language() prepopulated_fields_new = dict(self.prepopulated_fields) translation_fields = [] for k, v in self.prepopulated_fields.items(): diff --git a/modeltranslation/settings.py b/modeltranslation/settings.py index 6c8c1b8..78fb42c 100644 --- a/modeltranslation/settings.py +++ b/modeltranslation/settings.py @@ -12,6 +12,14 @@ if DEFAULT_LANGUAGE and DEFAULT_LANGUAGE not in AVAILABLE_LANGUAGES: elif not DEFAULT_LANGUAGE: DEFAULT_LANGUAGE = AVAILABLE_LANGUAGES[0] +# Fixed base language for prepopulated fields (slugs) +# (If not set, the current request language will be used) +PREPOPULATE_LANGUAGE = getattr(settings, + 'MODELTRANSLATION_PREPOPULATE_LANGUAGE', None) +if PREPOPULATE_LANGUAGE and PREPOPULATE_LANGUAGE not in AVAILABLE_LANGUAGES: + raise ImproperlyConfigured('MODELTRANSLATION_PREPOPULATE_LANGUAGE ' + 'not in LANGUAGES setting.') + # Load allowed CUSTOM_FIELDS from django settings CUSTOM_FIELDS = getattr(settings, 'MODELTRANSLATION_CUSTOM_FIELDS', ())