Skip to content
Snippets Groups Projects
views.py 981 B
Newer Older
# -*- 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"

Dylann Cordel's avatar
Dylann Cordel committed
    def get_object(self, queryset=None):
        """
        As slug_field is translated, we need to use translation aware
        queryset.
        """
Dylann Cordel's avatar
Dylann Cordel committed
        if not queryset:
            queryset = self.get_queryset()
        language = get_language()
Dylann Cordel's avatar
Dylann Cordel committed
        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