@@ -1908,6 +1908,21 @@ def menu(self, size=None, height=None, showid=0, additional=[], value=None,
19081908 if value and value not in options :
19091909 options .insert (0 , value )
19101910
1911+ if additional :
1912+ additional_fns = []
1913+ props = linkcl .getprops ()
1914+ for propname in additional :
1915+ prop = props [propname ]
1916+ if isinstance (prop , hyperdb .Link ):
1917+ cl = self ._db .getclass (prop .classname )
1918+ labelprop = cl .labelprop ()
1919+ fn = lambda optionid : cl .get (linkcl .get (optionid ,
1920+ propname ),
1921+ labelprop )
1922+ else :
1923+ fn = lambda optionid : linkcl .get (optionid , propname )
1924+ additional_fns .append (fn )
1925+
19111926 for optionid in options :
19121927 # get the option value, and if it's None use an empty string
19131928 option = linkcl .get (optionid , k ) or ''
@@ -1930,9 +1945,9 @@ def menu(self, size=None, height=None, showid=0, additional=[], value=None,
19301945 lab = lab [:size - 3 ] + '...'
19311946 if additional :
19321947 m = []
1933- for propname in additional :
1934- m .append (linkcl . get ( optionid , propname ))
1935- lab = lab + ' (%s)' % ', ' .join (map ( str , m ) )
1948+ for fn in additional_fns :
1949+ m .append (str ( fn ( optionid ) ))
1950+ lab = lab + ' (%s)' % ', ' .join (m )
19361951
19371952 # and generate
19381953 lab = cgi .escape (self ._ (lab ))
@@ -2109,6 +2124,21 @@ def menu(self, size=None, height=None, showid=0, additional=[],
21092124 if val not in options :
21102125 options .insert (0 , val )
21112126
2127+ if additional :
2128+ additional_fns = []
2129+ props = linkcl .getprops ()
2130+ for propname in additional :
2131+ prop = props [propname ]
2132+ if isinstance (prop , hyperdb .Link ):
2133+ cl = self ._db .getclass (prop .classname )
2134+ labelprop = cl .labelprop ()
2135+ fn = lambda optionid : cl .get (linkcl .get (optionid ,
2136+ propname ),
2137+ labelprop )
2138+ else :
2139+ fn = lambda optionid : linkcl .get (optionid , propname )
2140+ additional_fns .append (fn )
2141+
21122142 for optionid in options :
21132143 # get the option value, and if it's None use an empty string
21142144 option = linkcl .get (optionid , k ) or ''
@@ -2128,8 +2158,8 @@ def menu(self, size=None, height=None, showid=0, additional=[],
21282158 lab = lab [:size - 3 ] + '...'
21292159 if additional :
21302160 m = []
2131- for propname in additional :
2132- m .append (linkcl . get ( optionid , propname ))
2161+ for fn in additional_fns :
2162+ m .append (str ( fn ( optionid ) ))
21332163 lab = lab + ' (%s)' % ', ' .join (m )
21342164
21352165 # and generate
0 commit comments