1515# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717#
18- # $Id: hyperdb.py,v 1.112 2006-01-13 00:05:46 richard Exp $
18+ # $Id: hyperdb.py,v 1.113 2006-01-20 02:40:56 richard Exp $
1919
2020"""Hyperdatabase implementation, especially field types.
2121"""
@@ -591,6 +591,22 @@ def setkey(self, propname):
591591 """
592592 raise NotImplementedError
593593
594+ def setlabelprop (self , labelprop ):
595+ """Set the label property. Used for override of labelprop
596+ resolution order.
597+ """
598+ if labelprop not in self .getprops () :
599+ raise ValueError , "Not a property name: %s" % labelprop
600+ self ._labelprop = labelprop
601+
602+ def setorderprop (self , orderprop ):
603+ """Set the order property. Used for override of orderprop
604+ resolution order
605+ """
606+ if orderprop not in self .getprops () :
607+ raise ValueError , "Not a property name: %s" % orderprop
608+ self ._orderprop = orderprop
609+
594610 def getkey (self ):
595611 """Return the name of the key property for this class or None."""
596612 raise NotImplementedError
@@ -601,12 +617,45 @@ def labelprop(self, default_to_id=0):
601617 This method attempts to generate a consistent label for the node.
602618 It tries the following in order:
603619
620+ 0. self._labelprop if set
604621 1. key property
605622 2. "name" property
606623 3. "title" property
607624 4. first property from the sorted property name list
608625 """
609- raise NotImplementedError
626+ if hasattr (self , '_labelprop' ) :
627+ return self ._labelprop
628+ k = self .getkey ()
629+ if k :
630+ return k
631+ props = self .getprops ()
632+ if props .has_key ('name' ):
633+ return 'name'
634+ elif props .has_key ('title' ):
635+ return 'title'
636+ if default_to_id :
637+ return 'id'
638+ props = props .keys ()
639+ props .sort ()
640+ return props [0 ]
641+
642+ def orderprop (self ):
643+ """Return the property name to use for sorting for the given node.
644+
645+ This method computes the property for sorting.
646+ It tries the following in order:
647+
648+ 0. self._orderprop if set
649+ 1. "order" property
650+ 2. self.labelprop ()
651+ """
652+
653+ if hasattr (self , '_orderprop' ) :
654+ return self ._orderprop
655+ props = self .getprops ()
656+ if props .has_key ('order' ):
657+ return 'order'
658+ return self .labelprop ()
610659
611660 def lookup (self , keyvalue ):
612661 """Locate a particular node by its key property and return its id.
0 commit comments