diff -r -u roundup.orig/backends/back_anydbm.py roundup/backends/back_anydbm.py --- roundup.orig/backends/back_anydbm.py 2005-07-18 03:42:26.000000000 +0200 +++ roundup/backends/back_anydbm.py 2005-12-13 13:36:56.278304043 +0100 @@ -1375,31 +1375,6 @@ '''Return the name of the key property for this class or None.''' return self.key - def labelprop(self, default_to_id=0): - '''Return the property name for a label for the given node. - - This method attempts to generate a consistent label for the node. - It tries the following in order: - - 1. key property - 2. "name" property - 3. "title" property - 4. first property from the sorted property name list - ''' - k = self.getkey() - if k: - return k - props = self.getprops() - if props.has_key('name'): - return 'name' - elif props.has_key('title'): - return 'title' - if default_to_id: - return 'id' - props = props.keys() - props.sort() - return props[0] - # TODO: set up a separate index db file for this? profile? def lookup(self, keyvalue): '''Locate a particular node by its key property and return its id. diff -r -u roundup.orig/backends/back_metakit.py roundup/backends/back_metakit.py --- roundup.orig/backends/back_metakit.py 2005-07-18 03:20:23.000000000 +0200 +++ roundup/backends/back_metakit.py 2005-12-13 13:38:23.279398352 +0100 @@ -1415,31 +1415,6 @@ ''' return int(nodeid) < self.maxid - def labelprop(self, default_to_id=0): - '''Return the property name for a label for the given node. - - This method attempts to generate a consistent label for the node. - It tries the following in order: - - 1. key property - 2. "name" property - 3. "title" property - 4. first property from the sorted property name list - ''' - k = self.getkey() - if k: - return k - props = self.getprops() - if props.has_key('name'): - return 'name' - elif props.has_key('title'): - return 'title' - if default_to_id: - return 'id' - props = props.keys() - props.sort() - return props[0] - def stringFind(self, **requirements): '''Locate a particular node by matching a set of its String properties in a caseless search. diff -r -u roundup.orig/backends/rdbms_common.py roundup/backends/rdbms_common.py --- roundup.orig/backends/rdbms_common.py 2005-07-18 04:28:48.000000000 +0200 +++ roundup/backends/rdbms_common.py 2005-12-13 13:39:52.155236846 +0100 @@ -1837,31 +1837,6 @@ '''Return the name of the key property for this class or None.''' return self.key - def labelprop(self, default_to_id=0): - '''Return the property name for a label for the given node. - - This method attempts to generate a consistent label for the node. - It tries the following in order: - - 1. key property - 2. "name" property - 3. "title" property - 4. first property from the sorted property name list - ''' - k = self.getkey() - if k: - return k - props = self.getprops() - if props.has_key('name'): - return 'name' - elif props.has_key('title'): - return 'title' - if default_to_id: - return 'id' - props = props.keys() - props.sort() - return props[0] - def lookup(self, keyvalue): '''Locate a particular node by its key property and return its id. diff -r -u roundup.orig/hyperdb.py roundup/hyperdb.py --- roundup.orig/hyperdb.py 2005-07-18 04:27:14.000000000 +0200 +++ roundup/hyperdb.py 2005-12-13 13:58:49.778844168 +0100 @@ -590,6 +590,14 @@ """ raise NotImplementedError + def setlabelprop (self, labelprop): + """Set the label property. Used for override of labelprop + resolution order. + """ + if labelprop not in self.getprops () : + raise ValueError, "Not a property name: %s" % labelprop + self._labelprop = labelprop + def getkey(self): """Return the name of the key property for this class or None.""" raise NotImplementedError @@ -600,12 +608,27 @@ This method attempts to generate a consistent label for the node. It tries the following in order: + 0. self._labelprop if set 1. key property 2. "name" property 3. "title" property 4. first property from the sorted property name list """ - raise NotImplementedError + if hasattr (self, '_labelprop') : + return self._labelprop + k = self.getkey() + if k: + return k + props = self.getprops() + if props.has_key('name'): + return 'name' + elif props.has_key('title'): + return 'title' + if default_to_id: + return 'id' + props = props.keys() + props.sort() + return props[0] def lookup(self, keyvalue): """Locate a particular node by its key property and return its id.