Edgewall Software

Ticket #4715: query_sortorder011.diff

File query_sortorder011.diff, 1.4 KB (added by vnaum@…, 4 years ago)

fixes enum sorting for "custom query", patch against trac-0.11b1 (SVN revision 6673)

  • query.py

     
    411411        if self.group and self.group != self.order: 
    412412            order_cols.insert(0, (self.group, self.groupdesc)) 
    413413        for name, desc in order_cols: 
    414             if name not in custom_fields: 
     414            if name in custom_fields or name in enum_columns: 
     415                col = name + '.value' 
     416            else: 
    415417                col = 't.' + name 
    416             else: 
    417                 col = name + '.value' 
    418418            # FIXME: This is a somewhat ugly hack.  Can we also have the 
    419419            #        column type for this?  If it's an integer, we do first 
    420420            #        one, if text, we do 'else' 
     
    429429                else: 
    430430                    sql.append("COALESCE(%s,'')=''," % col) 
    431431            if name in enum_columns: 
     432                # These values must be compared as ints, not as strings 
     433                db = self.env.get_db_cnx() 
    432434                if desc: 
    433                     sql.append("%s.value DESC" % name) 
     435                    sql.append(db.cast(col, 'int') + ' DESC') 
    434436                else: 
    435                     sql.append("%s.value" % name) 
     437                    sql.append(db.cast(col, 'int')) 
    436438            elif name in ('milestone', 'version'): 
    437439                if name == 'milestone':  
    438440                    time_col = 'milestone.due'