All pastes #44304 Raw Edit

matt

public text v1 · immutable
#44304 ·published 2006-03-03 04:29 UTC
rendered paste body
=== trac/ticket/report.py==================================================================--- trac/ticket/report.py	(revision 8619)+++ trac/ticket/report.py	(local)@@ -22,6 +22,7 @@ from trac import util from trac.core import * from trac.perm import IPermissionRequestor+from trac.util import sorted from trac.web import IRequestHandler from trac.web.chrome import add_link, add_stylesheet, INavigationContributor from trac.wiki import wiki_to_html, IWikiSyntaxProvider, Formatter@@ -31,34 +32,7 @@ except ImportError:     from StringIO import StringIO -class ColumnSorter: -    def __init__(self, columnIndex, asc=1):-        self.columnIndex = columnIndex-        self.asc = asc--    def sort(self, x, y):-        const = -1-        if not self.asc:-            const = 1--        # make sure to ignore case in comparisons-        realX = x[self.columnIndex]-        if isinstance(realX, (str, unicode)):-            realX = realX.lower()-        realY = y[self.columnIndex]-        if isinstance(realY, (str, unicode)):-            realY = realY.lower()--        result = 0-        if realX < realY:-            result = const * 1-        elif realX > realY:-            result = const * -1--        return result-- class ReportModule(Component):      implements(INavigationContributor, IPermissionRequestor, IRequestHandler,@@ -309,12 +283,16 @@                 k = 'report.headers.%d.asc' % (colIndex - hiddenCols)                 asc = req.args.get('asc', None)                 if asc:-                    sorter = ColumnSorter(colIndex, int(asc))-                    req.hdf[k] = asc+                    asc = int(asc) # string '0' or '1' to int/boolean                 else:-                    sorter = ColumnSorter(colIndex)-                    req.hdf[k] = 1-                rows.sort(sorter.sort)+                    asc = 1+                req.hdf[k] = asc+                def sortkey(row):+                    val = row[colIndex]+                    if isinstance(val, basestring):+                        val = val.lower()+                    return val+                rows = sorted(rows, key=sortkey, reverse=(not asc))          # Convert the rows and cells to HDF-format         row_idx = 0