# -*- coding: utf-8 -*- from __future__ import unicode_literals from newsbox.views import NewsboxDetailView from django.utils.translation import get_language class NewsboxI18NListMixin(object): def get_queryset(self): queryset = super(NewsboxI18NListMixin, self).get_queryset() queryset = queryset.active_translations() return queryset class NewsboxI18NDetailView(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() obj = queryset.translated(language, newsbox_slug=self.kwargs[self.slug_url_kwarg]).get() if( not obj.is_published() and not obj.has_change_permission(self.request) ): raise Http404 return obj