# -*- 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)