diff -r -u roundup.orig/backends/back_anydbm.py /usr/local/lib/python2.4/site-packages/roundup/backends/back_anydbm.py --- roundup.orig/backends/back_anydbm.py 2005-12-13 15:28:38.514449881 +0100 +++ /usr/local/lib/python2.4/site-packages/roundup/backends/back_anydbm.py 2005-12-13 15:26:15.802829282 +0100 @@ -1754,12 +1754,8 @@ elif isinstance(propclass, hyperdb.Link): lcn = propclass.classname link = self.db.classes[lcn] - key = None - if link.getprops().has_key('order'): - key = 'order' - elif link.getkey(): - key = link.getkey() - if key: + key = link.orderprop() + if key!='id': if not lcache.has_key(v): # open the link class db if it's not already if lcldb is None: diff -r -u roundup.orig/backends/back_metakit.py /usr/local/lib/python2.4/site-packages/roundup/backends/back_metakit.py --- roundup.orig/backends/back_metakit.py 2005-12-13 15:28:38.515449744 +0100 +++ /usr/local/lib/python2.4/site-packages/roundup/backends/back_metakit.py 2005-12-13 15:21:01.992237691 +0100 @@ -1386,11 +1386,7 @@ lv = linkclass.getview() lv = lv.rename('id', propname) v = v.join(lv, prop, 1) - if linkclass.getprops().has_key('order'): - propname = 'order' - else: - propname = linkclass.labelprop() - prop = getattr(v, propname) + prop = getattr(v, linkclass.orderprop()) if isreversed: rev.append(prop) sortspec.append(prop) diff -r -u roundup.orig/backends/back_mysql.py /usr/local/lib/python2.4/site-packages/roundup/backends/back_mysql.py --- roundup.orig/backends/back_mysql.py 2005-07-18 03:20:23.000000000 +0200 +++ /usr/local/lib/python2.4/site-packages/roundup/backends/back_mysql.py 2005-12-13 15:06:35.934428423 +0100 @@ -685,14 +685,13 @@ lcn = props[prop].classname link = self.db.classes[lcn] o = '_%s._%s'%(cn, prop) - if link.getprops().has_key('order'): + op = link.orderprop () + if op != 'id': tn = '_' + lcn loj.append('LEFT OUTER JOIN %s on %s=%s.id'%(tn, o, tn)) - ordercols.append(tn + '._order') - o = tn + '._order' - else: - ordercols.append(o) + o = tn + '.%s'%op + ordercols.append(o) elif prop == 'id': o = '_%s.id'%cn else: diff -r -u roundup.orig/backends/rdbms_common.py /usr/local/lib/python2.4/site-packages/roundup/backends/rdbms_common.py --- roundup.orig/backends/rdbms_common.py 2005-12-13 15:28:38.516449607 +0100 +++ /usr/local/lib/python2.4/site-packages/roundup/backends/rdbms_common.py 2005-12-13 14:56:36.566025034 +0100 @@ -2186,14 +2186,13 @@ lcn = props[prop].classname link = self.db.classes[lcn] o = '_%s._%s'%(cn, prop) - if link.getprops().has_key('order'): + op = link.orderprop() + if op != 'id': tn = '_' + lcn loj.append('LEFT OUTER JOIN %s on %s=%s.id'%(tn, o, tn)) - ordercols.append(tn + '._order') - o = tn + '._order' - else: - ordercols.append(o) + o = tn + '._%s'%op + ordercols.append(o) elif prop == 'id': o = '_%s.id'%cn else: diff -r -u roundup.orig/hyperdb.py /usr/local/lib/python2.4/site-packages/roundup/hyperdb.py --- roundup.orig/hyperdb.py 2005-12-13 15:28:38.517449470 +0100 +++ /usr/local/lib/python2.4/site-packages/roundup/hyperdb.py 2005-12-13 14:38:07.743505090 +0100 @@ -598,6 +598,14 @@ raise ValueError, "Not a property name: %s" % labelprop self._labelprop = labelprop + def setorderprop (self, orderprop): + """Set the order property. Used for override of orderprop + resolution order + """ + if orderprop not in self.getprops () : + raise ValueError, "Not a property name: %s" % orderprop + self._orderprop = orderprop + def getkey(self): """Return the name of the key property for this class or None.""" raise NotImplementedError @@ -630,6 +638,14 @@ props.sort() return props[0] + def orderprop (self): + if hasattr (self, '_orderprop') : + return self._orderprop + props = self.getprops () + if props.has_key ('order'): + return 'order' + return self.labelprop () + def lookup(self, keyvalue): """Locate a particular node by its key property and return its id.