Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.http import Http404, HttpResponse
from django.shortcuts import render_to_response, get_object_or_404
from django.template.context import RequestContext
from django.utils.translation import ugettext as _
from django.db.models.loading import get_model
from django.views.generic.dates import DateDetailView, ArchiveIndexView, \
YearArchiveView, MonthArchiveView, DayArchiveView
from .models import NewsboxBase
class NewsboxBaseArchiveView(object):
"""
This view is responsible for displaying a list of newsbox
"""
date_field = "newsbox_date"
slug_field = "newsbox_slug"
paginate_by = 10
make_object_list = True
allow_future = True
template_name = "newsbox/list.html"
context_object_name = 'newsset'
title = None
def update_context_data(self, context, **kwargs):
with_pager = context['is_paginated']
context['newsset'].number = context['page_obj'].number
context['newsset'].has_previous = context['page_obj'].has_previous
context['newsset'].has_next = context['page_obj'].has_next
context['newsset'].next_page_number = context['page_obj'].next_page_number
context['newsset'].previous_page_number = context['page_obj'].previous_page_number
context['newsset'].paginator = context['paginator']
if self.title == None:
title = self.model._meta.verbose_name_plural.capitalize()
else:
title=self.title
context.update({
'instance': None,
'title': title,
'title_url': '',
'newsbox_opts':self.model._newsbox_meta,
'with_pager': with_pager,
})
return context
def get_queryset(self):
if self.request.user.is_staff:
return self.model.objects.all()
else:
return self.model.objects.published()
class NewsboxArchiveView(NewsboxBaseArchiveView, ArchiveIndexView):
def get_context_data(self, **kwargs):
context = super(NewsboxArchiveView, self).get_context_data(**kwargs)
NewsboxBaseArchiveView.update_context_data(self, context, **kwargs)
return context
class NewsboxYearArchiveView(NewsboxBaseArchiveView, YearArchiveView):
def get_context_data(self, **kwargs):
context = super(NewsboxYearArchiveView, self).get_context_data(**kwargs)
NewsboxBaseArchiveView.update_context_data(self, context, **kwargs)
return context
def get_queryset(self):
if self.request.user.is_staff:
return self.model.objects.all()
else:
return self.model.objects.published()
class NewsboxMonthArchiveView(NewsboxBaseArchiveView, MonthArchiveView):
month_format = "%m"
def get_context_data(self, **kwargs):
context = super(NewsboxMonthArchiveView, self).get_context_data(**kwargs)
NewsboxBaseArchiveView.update_context_data(self, context, **kwargs)
return context
class NewsboxDayArchiveView(NewsboxBaseArchiveView, DayArchiveView):
month_format = "%m"
def get_context_data(self, **kwargs):
context = super(NewsboxDayArchiveView, self).get_context_data(**kwargs)
NewsboxBaseArchiveView.update_context_data(self, context, **kwargs)
return context
class NewsboxDetailView(DateDetailView):
"""
This view is responsible for displaying a newsbox
"""
month_format = "%m"
date_field = "newsbox_date"
slug_field = "newsbox_slug"
template_name = "newsbox/detail.html"
context_object_name = "news"
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)
return context
def get_object(self):
# We check user permission
obj = super(NewsboxDetailView, self).get_object()
if(
not obj.is_published()
and not obj.has_change_permission(self.request)
):
raise Http404
return obj