4 years ago
[svn] updated groupby filter for better sorting
| jinja/filters.py | file | annotate | diff | revisions | |
| jinja/utils.py | file | annotate | diff | revisions |
1.1 --- a/jinja/filters.py Tue Jul 10 19:49:35 2007 +0200 1.2 +++ b/jinja/filters.py Tue Jul 10 20:07:15 2007 +0200 1.3 @@ -877,12 +877,10 @@ 1.4 """ 1.5 def wrapped(env, context, value): 1.6 expr = lambda x: env.get_attribute(x, attribute) 1.7 - rv = [{ 1.8 + return [{ 1.9 'grouper': a, 1.10 'list': list(b) 1.11 - } for a, b in groupby(sorted(value, key=expr), expr)] 1.12 - rv.sort() 1.13 - return rv 1.14 + } for a, b in sorted(groupby(sorted(value, key=expr), expr))] 1.15 return wrapped 1.16 1.17
2.1 --- a/jinja/utils.py Tue Jul 10 19:49:35 2007 +0200 2.2 +++ b/jinja/utils.py Tue Jul 10 20:07:15 2007 +0200 2.3 @@ -61,9 +61,12 @@ 2.4 try: 2.5 sorted = sorted 2.6 except NameError: 2.7 - def sorted(seq, reverse=False): 2.8 + _cmp = cmp 2.9 + def sorted(seq, cmp=None, key=None, reverse=False): 2.10 rv = list(seq) 2.11 - rv.sort() 2.12 + if key is not None: 2.13 + cmp = lambda a, b: _cmp(key(a), key(b)) 2.14 + rv.sort(cmp) 2.15 if reverse: 2.16 rv.reverse() 2.17 return rv