# -*- coding: utf-8 -*- from __future__ import unicode_literals from newsbox.views import NewsboxDetailView from django.utils.translation import get_language class NewsboxI18NPublishedMixinView(object): def get_queryset(self): queryset = super(NewsboxI18NPublishedMixinView, self).get_queryset() queryset = queryset.active_translations() return queryset class NewsboxI18NListMixin(NewsboxI18NPublishedMixinView): def __new__(cls, *args, **kwargs): from warnings import warn warn(('newsbox_i18n.views.NewsboxI18NListMixin is deprecated. ' 'Please use newsbox_i18n.views.NewsboxI18NPublishedMixinView instead'), DeprecationWarning) return super(NewsboxI18NListMixin, cls).__new__(cls, *args, **kwargs) class NewsboxI18NDetailView(NewsboxI18NPublishedMixinView, NewsboxDetailView): slug_field = "translations__newsbox_slug" def get_object(self, queryset=None): """ As slug_field is translated, we need to use translation aware queryset. """ if not queryset: queryset = self.get_queryset() language = get_language() queryset = queryset.translated(language, newsbox_slug=self.kwargs[self.slug_url_kwarg]) return super(NewsboxI18NDetailView, self).get_object(queryset)