def _language(self, request, obj=None): """ Get the language parameter from the current request. """ if not is_multilingual_project() or not self._has_translatable_model(): # By default, the objects are stored in a single static language. # This makes the transition to multilingual easier as well. # The default language can operate as fallback language too. return appsettings.PARLER_DEFAULT_LANGUAGE_CODE else: # In multilingual mode, take the provided language of the request. code = request.GET.get(self.query_language_key) if not code: # Show first tab by default try: lang_choices = appsettings.PARLER_LANGUAGES[ settings.SITE_ID] code = lang_choices[0]['code'] except (KeyError, IndexError): # No configuration, always fallback to default language. # This is essentially a non-multilingual configuration. code = appsettings.PARLER_DEFAULT_LANGUAGE_CODE return normalize_language_code(code)
def get_queryset_language(self, request): if not is_multilingual_project(): # Make sure the current translations remain visible, not the dynamically set get_language() value. return appsettings.PARLER_LANGUAGES.get_default_language() else: # Set the initial language for fetched objects. # This is needed for the TranslatableInlineModelAdmin return self._language(request)
def get_queryset_language(self, request): """ Return the language to use in the queryset. """ if not is_multilingual_project(): # Make sure the current translations remain visible, not the dynamically set get_language() value. return appsettings.PARLER_LANGUAGES.get_default_language() else: # Allow to adjust to current language # This is overwritten for the inlines, which follow the primary object. return get_language()
def queryset(self, request): """ Make sure the current language is selected. """ qs = super(TranslatableAdmin, self).queryset(request) if self._has_translatable_model(): if not isinstance(qs, TranslatableQuerySet): raise ImproperlyConfigured("{0} class does not inherit from TranslatableQuerySet".format(qs.__class__.__name__)) if not is_multilingual_project(): # Make sure the current translations remain visible, not the dynamically set get_language() value. qs = qs.language(appsettings.PARLER_DEFAULT_LANGUAGE_CODE) return qs
def queryset(self, request): """ Make sure the current language is selected. """ qs = super(BaseTranslatableAdmin, self).queryset(request) if self._has_translatable_model(): if not isinstance(qs, TranslatableQuerySet): raise ImproperlyConfigured( "{0} class does not inherit from TranslatableQuerySet". format(qs.__class__.__name__)) if not is_multilingual_project(): # Make sure the current translations remain visible, not the dynamically set get_language() value. qs = qs.language(appsettings.PARLER_DEFAULT_LANGUAGE_CODE) else: # Set the initial language for fetched objects. # This is needed for the TranslatableInlineModelAdmin qs = qs.language(self._language(request)) return qs
def _language(self, request, obj=None): """ Get the language parameter from the current request. """ if not is_multilingual_project() or not self._has_translatable_model(): # By default, the objects are stored in a single static language. # This makes the transition to multilingual easier as well. # The default language can operate as fallback language too. return appsettings.PARLER_DEFAULT_LANGUAGE_CODE else: # In multilingual mode, take the provided language of the request. code = request.GET.get(self.query_language_key) if not code: # Show first tab by default try: lang_choices = appsettings.PARLER_LANGUAGES[settings.SITE_ID] code = lang_choices[0]['code'] except (KeyError, IndexError): # No configuration, always fallback to default language. # This is essentially a non-multilingual configuration. code = appsettings.PARLER_DEFAULT_LANGUAGE_CODE return normalize_language_code(code)