Fixed #4462 -- Use builtin reversed() function when available (in "for" tag).

Thanks, Brian Harring.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@5454 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2007-06-10 03:11:10 +00:00
parent a33fb695e3
commit 03ecc00f6e
1 changed files with 9 additions and 5 deletions

View File

@ -7,6 +7,14 @@ from django.conf import settings
import sys import sys
import re import re
if not hasattr(__builtins__, 'reversed'):
# For Python 2.3.
# From http://www.python.org/doc/current/tut/node11.html
def reversed(data):
for index in xrange(len(data)-1, -1, -1):
yield data[index]
register = Library() register = Library()
class CommentNode(Node): class CommentNode(Node):
@ -103,11 +111,7 @@ class ForNode(Node):
values = list(values) values = list(values)
len_values = len(values) len_values = len(values)
if self.reversed: if self.reversed:
# From http://www.python.org/doc/current/tut/node11.html values = reversed(values)
def reverse(data):
for index in range(len(data)-1, -1, -1):
yield data[index]
values = reverse(values)
unpack = len(self.loopvars) > 1 unpack = len(self.loopvars) > 1
for i, item in enumerate(values): for i, item in enumerate(values):
context['forloop'] = { context['forloop'] = {