[svn] updated groupby filter for better sorting trunk svn.3758

4 years ago

author
blackbird
date
Tue Jul 10 20:07:15 2007 +0200
branch
trunk
changeset 210
feb0c26ca993
parent 209
bffaea992084
child 211
6559a1761b9e

[svn] updated groupby filter for better sorting

jinja/filters.pyfile | annotate | diff | revisions
jinja/utils.pyfile | 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

mercurial