Newer
Older
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.views.generic.dates import DateDetailView, ArchiveIndexView, \
YearArchiveView, MonthArchiveView, DayArchiveView
from .models import NewsboxSEOBase, NewsboxExpiredBase
class NewsboxPublishedMixinView(object):
def get_queryset(self):
queryset = super(NewsboxPublishedMixinView, self).get_queryset()
if not self.model.has_change_permission(self.request.user):
queryset = queryset.filter(self.model.q_published())
return queryset
class NewsboxBaseArchiveView(NewsboxPublishedMixinView):
"""
This view is responsible for displaying a list of newsbox
"""
date_field = "newsbox_publication_start_date"
slug_field = "newsbox_slug"
make_object_list = True
allow_future = True
title = None
def get_context_data(self, *args, **kwargs):
context = super(NewsboxBaseArchiveView, self).get_context_data(*args, **kwargs)
title = self.model._meta.verbose_name_plural.capitalize()
else:
'model': self.model,
'model_opts': self.model._meta,
'instance': None,
'title': title,
'title_url': '',
'newsbox_opts': self.model._newsbox_meta,
'date_list_period': self.date_list_period,
if context['object_list']:
context['current_date'] = context['object_list'][0].newsbox_publication_start_date
class NewsboxArchiveView(NewsboxBaseArchiveView, ArchiveIndexView):
template_name_suffix = "_list"
allow_empty = True
class NewsboxYearArchiveView(NewsboxBaseArchiveView, YearArchiveView):
template_name_suffix = "_list"
class NewsboxMonthArchiveView(NewsboxBaseArchiveView, MonthArchiveView):
template_name_suffix = "_list"
class NewsboxDayArchiveView(NewsboxBaseArchiveView, DayArchiveView):
template_name_suffix = "_list"
date_list_period = "day"
class NewsboxDetailView(NewsboxPublishedMixinView, DateDetailView):
"""
This view is responsible for displaying a newsbox
"""
month_format = "%m"
date_field = "newsbox_publication_start_date"
slug_field = "newsbox_slug"
allow_future = True
def get_context_data(self, **kwargs):
context = super(NewsboxDetailView, self).get_context_data(**kwargs)
if 'NewsboxCMSBase' in (base.__name__ for base in self.model.__bases__):
from menus.utils import set_language_changer
set_language_changer(self.request, self.object.get_absolute_url)
context['newsbox_seo'] = isinstance(context['object'], NewsboxSEOBase)
context['newsbox_expired'] = isinstance(context['object'], NewsboxExpiredBase)