| 1 | Index: django/views/generic/date_based.py
|
|---|
| 2 | ===================================================================
|
|---|
| 3 | --- django/views/generic/date_based.py (revision 3490)
|
|---|
| 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, allow_future=False):
|
|---|
| 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 | if not allow_future:
|
|---|
| 28 | queryset = queryset.filter(**{'%s__lte' % date_field: datetime.datetime.now()})
|
|---|
| 29 | @@ -47,6 +51,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 | + login_required=False, context_processors=None, template_object_name='object',
|
|---|
| 34 | + mimetype=None, make_object_list=False, allow_future=False):
|
|---|
| 35 | context_processors=None, template_object_name='object', mimetype=None,
|
|---|
| 36 | make_object_list=False, allow_future=False):
|
|---|
| 37 | """
|
|---|
| 38 | @@ -63,6 +69,9 @@
|
|---|
| 39 | (Only available if make_object_list argument is True)
|
|---|
| 40 | """
|
|---|
| 41 | if extra_context is None: extra_context = {}
|
|---|
| 42 | + if login_required and request.user.is_anonymous():
|
|---|
| 43 | + return redirect_to_login(request)
|
|---|
| 44 | +
|
|---|
| 45 | model = queryset.model
|
|---|
| 46 | now = datetime.datetime.now()
|
|---|
| 47 |
|
|---|
| 48 | @@ -95,8 +104,9 @@
|
|---|
| 49 |
|
|---|
| 50 | def archive_month(request, year, month, queryset, date_field,
|
|---|
| 51 | month_format='%b', template_name=None, template_loader=loader,
|
|---|
| 52 | - extra_context=None, allow_empty=False, context_processors=None,
|
|---|
| 53 | - template_object_name='object', mimetype=None, allow_future=False):
|
|---|
| 54 | + extra_context=None, allow_empty=False, login_required=False,
|
|---|
| 55 | + context_processors=None, template_object_name='object', mimetype=None,
|
|---|
| 56 | + allow_future=False):
|
|---|
| 57 | """
|
|---|
| 58 | Generic monthly archive view.
|
|---|
| 59 |
|
|---|
| 60 | @@ -112,6 +122,9 @@
|
|---|
| 61 | list of objects published in the given month
|
|---|
| 62 | """
|
|---|
| 63 | if extra_context is None: extra_context = {}
|
|---|
| 64 | + if login_required and request.user.is_anonymous():
|
|---|
| 65 | + return redirect_to_login(request)
|
|---|
| 66 | +
|
|---|
| 67 | try:
|
|---|
| 68 | date = datetime.date(*time.strptime(year+month, '%Y'+month_format)[:3])
|
|---|
| 69 | except ValueError:
|
|---|
| 70 | @@ -161,8 +174,9 @@
|
|---|
| 71 |
|
|---|
| 72 | def archive_week(request, year, week, queryset, date_field,
|
|---|
| 73 | template_name=None, template_loader=loader,
|
|---|
| 74 | - extra_context=None, allow_empty=True, context_processors=None,
|
|---|
| 75 | - template_object_name='object', mimetype=None, allow_future=False):
|
|---|
| 76 | + extra_context=None, allow_empty=True, login_required=False,
|
|---|
| 77 | + context_processors=None, template_object_name='object', mimetype=None,
|
|---|
| 78 | + allow_future=False):
|
|---|
| 79 | """
|
|---|
| 80 | Generic weekly archive view.
|
|---|
| 81 |
|
|---|
| 82 | @@ -174,6 +188,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 | @@ -210,8 +227,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, allow_future=False):
|
|---|
| 98 | + login_required=False, context_processors=None,
|
|---|
| 99 | + template_object_name='object', mimetype=None, allow_future=False):
|
|---|
| 100 | """
|
|---|
| 101 | Generic daily archive view.
|
|---|
| 102 |
|
|---|
| 103 | @@ -227,6 +244,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 | @@ -286,7 +306,8 @@
|
|---|
| 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, allow_future=False):
|
|---|
| 118 | + login_required=False, template_object_name='object', mimetype=None,
|
|---|
| 119 | + allow_future=False):
|
|---|
| 120 | """
|
|---|
| 121 | Generic detail view from year/month/day/slug or year/month/day/id structure.
|
|---|
| 122 |
|
|---|
| 123 | @@ -296,6 +317,9 @@
|
|---|
| 124 | the object to be detailed
|
|---|
| 125 | """
|
|---|
| 126 | if extra_context is None: extra_context = {}
|
|---|
| 127 | + if login_required and request.user.is_anonymous():
|
|---|
| 128 | + return redirect_to_login(request)
|
|---|
| 129 | +
|
|---|
| 130 | try:
|
|---|
| 131 | date = datetime.date(*time.strptime(year+month+day, '%Y'+month_format+day_format)[:3])
|
|---|
| 132 | except ValueError:
|
|---|
| 133 | Index: django/views/generic/list_detail.py
|
|---|
| 134 | ===================================================================
|
|---|
| 135 | --- django/views/generic/list_detail.py (revision 3490)
|
|---|
| 136 | +++ django/views/generic/list_detail.py (working copy)
|
|---|
| 137 | @@ -1,13 +1,14 @@
|
|---|
| 138 | from django.template import loader, RequestContext
|
|---|
| 139 | from django.http import Http404, HttpResponse
|
|---|
| 140 | +from django.contrib.auth.views import redirect_to_login
|
|---|
| 141 | from django.core.xheaders import populate_xheaders
|
|---|
| 142 | from django.core.paginator import ObjectPaginator, InvalidPage
|
|---|
| 143 | from django.core.exceptions import ObjectDoesNotExist
|
|---|
| 144 |
|
|---|
| 145 | def object_list(request, queryset, paginate_by=None, page=None,
|
|---|
| 146 | allow_empty=False, template_name=None, template_loader=loader,
|
|---|
| 147 | - extra_context=None, context_processors=None, template_object_name='object',
|
|---|
| 148 | - mimetype=None):
|
|---|
| 149 | + extra_context=None, login_required=False, context_processors=None,
|
|---|
| 150 | + template_object_name='object', mimetype=None):
|
|---|
| 151 | """
|
|---|
| 152 | Generic list of objects.
|
|---|
| 153 |
|
|---|
| 154 | @@ -35,6 +36,9 @@
|
|---|
| 155 | number of objects, total
|
|---|
| 156 | """
|
|---|
| 157 | if extra_context is None: extra_context = {}
|
|---|
| 158 | + if login_required and request.user.is_anonymous():
|
|---|
| 159 | + return redirect_to_login(request)
|
|---|
| 160 | +
|
|---|
| 161 | queryset = queryset._clone()
|
|---|
| 162 | if paginate_by:
|
|---|
| 163 | paginator = ObjectPaginator(queryset, paginate_by)
|
|---|
| 164 | @@ -80,7 +84,7 @@
|
|---|
| 165 |
|
|---|
| 166 | def object_detail(request, queryset, object_id=None, slug=None,
|
|---|
| 167 | slug_field=None, template_name=None, template_name_field=None,
|
|---|
| 168 | - template_loader=loader, extra_context=None,
|
|---|
| 169 | + template_loader=loader, extra_context=None, login_required=False,
|
|---|
| 170 | context_processors=None, template_object_name='object',
|
|---|
| 171 | mimetype=None):
|
|---|
| 172 | """
|
|---|
| 173 | @@ -92,6 +96,9 @@
|
|---|
| 174 | the object
|
|---|
| 175 | """
|
|---|
| 176 | if extra_context is None: extra_context = {}
|
|---|
| 177 | + if login_required and request.user.is_anonymous():
|
|---|
| 178 | + return redirect_to_login(request)
|
|---|
| 179 | +
|
|---|
| 180 | model = queryset.model
|
|---|
| 181 | if object_id:
|
|---|
| 182 | queryset = queryset.filter(pk=object_id)
|
|---|