1 | Index: django/views/generic/date_based.py
|
---|
2 | ===================================================================
|
---|
3 | --- django/views/generic/date_based.py (revision 3354)
|
---|
4 | +++ django/views/generic/date_based.py (working copy)
|
---|
5 | @@ -1,11 +1,12 @@
|
---|
6 | from django.template import loader, RequestContext
|
---|
7 | +from django.contrib.auth.views import redirect_to_login
|
---|
8 | from django.core.exceptions import ObjectDoesNotExist
|
---|
9 | from django.core.xheaders import populate_xheaders
|
---|
10 | from django.http import Http404, HttpResponse
|
---|
11 | import datetime, time
|
---|
12 |
|
---|
13 | def archive_index(request, queryset, date_field, num_latest=15,
|
---|
14 | - template_name=None, template_loader=loader,
|
---|
15 | + template_name=None, template_loader=loader, login_required=False,
|
---|
16 | extra_context=None, allow_empty=False, context_processors=None,
|
---|
17 | mimetype=None):
|
---|
18 | """
|
---|
19 | @@ -19,6 +20,9 @@
|
---|
20 | Latest N (defaults to 15) objects by date
|
---|
21 | """
|
---|
22 | if extra_context is None: extra_context = {}
|
---|
23 | + if login_required and request.user.is_anonymous():
|
---|
24 | + return redirect_to_login(request)
|
---|
25 | +
|
---|
26 | model = queryset.model
|
---|
27 | queryset = queryset.filter(**{'%s__lte' % date_field: datetime.datetime.now()})
|
---|
28 | date_list = queryset.dates(date_field, 'year')[::-1]
|
---|
29 | @@ -46,8 +50,8 @@
|
---|
30 |
|
---|
31 | def archive_year(request, year, queryset, date_field, template_name=None,
|
---|
32 | template_loader=loader, extra_context=None, allow_empty=False,
|
---|
33 | - context_processors=None, template_object_name='object', mimetype=None,
|
---|
34 | - make_object_list=False):
|
---|
35 | + login_required=False, context_processors=None, template_object_name='object',
|
---|
36 | + mimetype=None, make_object_list=False):
|
---|
37 | """
|
---|
38 | Generic yearly archive view.
|
---|
39 |
|
---|
40 | @@ -62,6 +66,9 @@
|
---|
41 | (Only available if make_object_list argument is True)
|
---|
42 | """
|
---|
43 | if extra_context is None: extra_context = {}
|
---|
44 | + if login_required and request.user.is_anonymous():
|
---|
45 | + return redirect_to_login(request)
|
---|
46 | +
|
---|
47 | model = queryset.model
|
---|
48 | now = datetime.datetime.now()
|
---|
49 |
|
---|
50 | @@ -94,8 +101,8 @@
|
---|
51 |
|
---|
52 | def archive_month(request, year, month, queryset, date_field,
|
---|
53 | month_format='%b', template_name=None, template_loader=loader,
|
---|
54 | - extra_context=None, allow_empty=False, context_processors=None,
|
---|
55 | - template_object_name='object', mimetype=None):
|
---|
56 | + extra_context=None, allow_empty=False, login_required=False,
|
---|
57 | + context_processors=None, template_object_name='object', mimetype=None):
|
---|
58 | """
|
---|
59 | Generic monthly archive view.
|
---|
60 |
|
---|
61 | @@ -111,6 +118,9 @@
|
---|
62 | list of objects published in the given month
|
---|
63 | """
|
---|
64 | if extra_context is None: extra_context = {}
|
---|
65 | + if login_required and request.user.is_anonymous():
|
---|
66 | + return redirect_to_login(request)
|
---|
67 | +
|
---|
68 | try:
|
---|
69 | date = datetime.date(*time.strptime(year+month, '%Y'+month_format)[:3])
|
---|
70 | except ValueError:
|
---|
71 | @@ -151,8 +161,8 @@
|
---|
72 |
|
---|
73 | def archive_week(request, year, week, queryset, date_field,
|
---|
74 | template_name=None, template_loader=loader,
|
---|
75 | - extra_context=None, allow_empty=True, context_processors=None,
|
---|
76 | - template_object_name='object', mimetype=None):
|
---|
77 | + extra_context=None, allow_empty=True, login_required=False,
|
---|
78 | + context_processors=None, template_object_name='object', mimetype=None):
|
---|
79 | """
|
---|
80 | Generic weekly archive view.
|
---|
81 |
|
---|
82 | @@ -164,6 +174,9 @@
|
---|
83 | list of objects published in the given week
|
---|
84 | """
|
---|
85 | if extra_context is None: extra_context = {}
|
---|
86 | + if login_required and request.user.is_anonymous():
|
---|
87 | + return redirect_to_login(request)
|
---|
88 | +
|
---|
89 | try:
|
---|
90 | date = datetime.date(*time.strptime(year+'-0-'+week, '%Y-%w-%U')[:3])
|
---|
91 | except ValueError:
|
---|
92 | @@ -200,8 +213,8 @@
|
---|
93 | def archive_day(request, year, month, day, queryset, date_field,
|
---|
94 | month_format='%b', day_format='%d', template_name=None,
|
---|
95 | template_loader=loader, extra_context=None, allow_empty=False,
|
---|
96 | - context_processors=None, template_object_name='object',
|
---|
97 | - mimetype=None):
|
---|
98 | + login_required=False, context_processors=None,
|
---|
99 | + template_object_name='object', mimetype=None):
|
---|
100 | """
|
---|
101 | Generic daily archive view.
|
---|
102 |
|
---|
103 | @@ -217,6 +230,9 @@
|
---|
104 | (datetime) the next day, or None if the current day is today
|
---|
105 | """
|
---|
106 | if extra_context is None: extra_context = {}
|
---|
107 | + if login_required and request.user.is_anonymous():
|
---|
108 | + return redirect_to_login(request)
|
---|
109 | +
|
---|
110 | try:
|
---|
111 | date = datetime.date(*time.strptime(year+month+day, '%Y'+month_format+day_format)[:3])
|
---|
112 | except ValueError:
|
---|
113 | @@ -267,7 +283,7 @@
|
---|
114 | month_format='%b', day_format='%d', object_id=None, slug=None,
|
---|
115 | slug_field=None, template_name=None, template_name_field=None,
|
---|
116 | template_loader=loader, extra_context=None, context_processors=None,
|
---|
117 | - template_object_name='object', mimetype=None):
|
---|
118 | + login_required=False, template_object_name='object', mimetype=None):
|
---|
119 | """
|
---|
120 | Generic detail view from year/month/day/slug or year/month/day/id structure.
|
---|
121 |
|
---|
122 | @@ -277,6 +293,9 @@
|
---|
123 | the object to be detailed
|
---|
124 | """
|
---|
125 | if extra_context is None: extra_context = {}
|
---|
126 | + if login_required and request.user.is_anonymous():
|
---|
127 | + return redirect_to_login(request)
|
---|
128 | +
|
---|
129 | try:
|
---|
130 | date = datetime.date(*time.strptime(year+month+day, '%Y'+month_format+day_format)[:3])
|
---|
131 | except ValueError:
|
---|
132 | Index: django/views/generic/list_detail.py
|
---|
133 | ===================================================================
|
---|
134 | --- django/views/generic/list_detail.py (revision 3354)
|
---|
135 | +++ django/views/generic/list_detail.py (working copy)
|
---|
136 | @@ -1,13 +1,14 @@
|
---|
137 | from django.template import loader, RequestContext
|
---|
138 | from django.http import Http404, HttpResponse
|
---|
139 | +from django.contrib.auth.views import redirect_to_login
|
---|
140 | from django.core.xheaders import populate_xheaders
|
---|
141 | from django.core.paginator import ObjectPaginator, InvalidPage
|
---|
142 | from django.core.exceptions import ObjectDoesNotExist
|
---|
143 |
|
---|
144 | def object_list(request, queryset, paginate_by=None, page=None,
|
---|
145 | allow_empty=False, template_name=None, template_loader=loader,
|
---|
146 | - extra_context=None, context_processors=None, template_object_name='object',
|
---|
147 | - mimetype=None):
|
---|
148 | + extra_context=None, login_required=False, context_processors=None,
|
---|
149 | + template_object_name='object', mimetype=None):
|
---|
150 | """
|
---|
151 | Generic list of objects.
|
---|
152 |
|
---|
153 | @@ -35,6 +36,9 @@
|
---|
154 | number of objects, total
|
---|
155 | """
|
---|
156 | if extra_context is None: extra_context = {}
|
---|
157 | + if login_required and request.user.is_anonymous():
|
---|
158 | + return redirect_to_login(request)
|
---|
159 | +
|
---|
160 | queryset = queryset._clone()
|
---|
161 | if paginate_by:
|
---|
162 | paginator = ObjectPaginator(queryset, paginate_by)
|
---|
163 | @@ -80,7 +84,7 @@
|
---|
164 |
|
---|
165 | def object_detail(request, queryset, object_id=None, slug=None,
|
---|
166 | slug_field=None, template_name=None, template_name_field=None,
|
---|
167 | - template_loader=loader, extra_context=None,
|
---|
168 | + template_loader=loader, extra_context=None, login_required=False,
|
---|
169 | context_processors=None, template_object_name='object',
|
---|
170 | mimetype=None):
|
---|
171 | """
|
---|
172 | @@ -92,6 +96,9 @@
|
---|
173 | the object
|
---|
174 | """
|
---|
175 | if extra_context is None: extra_context = {}
|
---|
176 | + if login_required and request.user.is_anonymous():
|
---|
177 | + return redirect_to_login(request)
|
---|
178 | +
|
---|
179 | model = queryset.model
|
---|
180 | if object_id:
|
---|
181 | queryset = queryset.filter(pk=object_id)
|
---|