summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-01-06 03:53:33 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-01-06 03:53:33 +0000
commita7da12d32090e887b72093b7e8f2870a8d7cf3a7 (patch)
tree059755aa0ce4f5b6769348bbb190edf42f62bbe2
parent1f6bc7ffa774ee7f00ed58f62477be64c1e0451e (diff)
Fixed #5567 -- Added a "last" filter. Based on a patch from darkpixel.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6998 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/template/defaultfilters.py9
-rw-r--r--docs/templates.txt5
-rw-r--r--tests/regressiontests/templates/filters.py3
3 files changed, 17 insertions, 0 deletions
diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py
index 7ef531e688..ddd48146f2 100644
--- a/django/template/defaultfilters.py
+++ b/django/template/defaultfilters.py
@@ -449,6 +449,14 @@ def join(value, arg):
return data
join.is_safe = True
+def last(value):
+ "Returns the last item in a list"
+ try:
+ return value[-1]
+ except IndexError:
+ return u''
+last.is_safe = True
+
def length(value):
"""Returns the length of the value - useful for lists."""
return len(value)
@@ -800,6 +808,7 @@ register.filter(force_escape)
register.filter(get_digit)
register.filter(iriencode)
register.filter(join)
+register.filter(last)
register.filter(length)
register.filter(length_is)
register.filter(linebreaks)
diff --git a/docs/templates.txt b/docs/templates.txt
index ffda321512..c3ed7e5a1c 100644
--- a/docs/templates.txt
+++ b/docs/templates.txt
@@ -1403,6 +1403,11 @@ join
Joins a list with a string, like Python's ``str.join(list)``.
+last
+~~~~
+
+Returns the last item in a list.
+
length
~~~~~~
diff --git a/tests/regressiontests/templates/filters.py b/tests/regressiontests/templates/filters.py
index f38b2cdef1..fd73dc57ba 100644
--- a/tests/regressiontests/templates/filters.py
+++ b/tests/regressiontests/templates/filters.py
@@ -179,6 +179,9 @@ def get_filter_tests():
'filter-first01': ('{{ a|first }} {{ b|first }}', {"a": ["a&b", "x"], "b": [mark_safe("a&b"), "x"]}, "a&amp;b a&b"),
'filter-first02': ('{% autoescape off %}{{ a|first }} {{ b|first }}{% endautoescape %}', {"a": ["a&b", "x"], "b": [mark_safe("a&b"), "x"]}, "a&b a&b"),
+ 'filter-last01': ('{{ a|last }} {{ b|last }}', {"a": ["x", "a&b"], "b": ["x", mark_safe("a&b")]}, "a&amp;b a&b"),
+ 'filter-last02': ('{% autoescape off %}{{ a|last }} {{ b|last }}{% endautoescape %}', {"a": ["x", "a&b"], "b": ["x", mark_safe("a&b")]}, "a&b a&b"),
+
'filter-random01': ('{{ a|random }} {{ b|random }}', {"a": ["a&b", "a&b"], "b": [mark_safe("a&b"), mark_safe("a&b")]}, "a&amp;b a&b"),
'filter-random02': ('{% autoescape off %}{{ a|random }} {{ b|random }}{% endautoescape %}', {"a": ["a&b", "a&b"], "b": [mark_safe("a&b"), mark_safe("a&b")]}, "a&b a&b"),