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