Mercurial > p > roundup > code
diff roundup/cgi/templating.py @ 4053:f2030089dac6
Extend "additional" parameter to work with (multi)links.
| author | Stefan Seefeld <stefan@seefeld.name> |
|---|---|
| date | Thu, 19 Feb 2009 21:59:14 +0000 |
| parents | f8ba421ee4b0 |
| children | 6070bc4935fa |
line wrap: on
line diff
--- a/roundup/cgi/templating.py Thu Feb 19 21:52:35 2009 +0000 +++ b/roundup/cgi/templating.py Thu Feb 19 21:59:14 2009 +0000 @@ -1908,6 +1908,21 @@ if value and value not in options: options.insert(0, value) + if additional: + additional_fns = [] + props = linkcl.getprops() + for propname in additional: + prop = props[propname] + if isinstance(prop, hyperdb.Link): + cl = self._db.getclass(prop.classname) + labelprop = cl.labelprop() + fn = lambda optionid: cl.get(linkcl.get(optionid, + propname), + labelprop) + else: + fn = lambda optionid: linkcl.get(optionid, propname) + additional_fns.append(fn) + for optionid in options: # get the option value, and if it's None use an empty string option = linkcl.get(optionid, k) or '' @@ -1930,9 +1945,9 @@ lab = lab[:size-3] + '...' if additional: m = [] - for propname in additional: - m.append(linkcl.get(optionid, propname)) - lab = lab + ' (%s)'%', '.join(map(str, m)) + for fn in additional_fns: + m.append(str(fn(optionid))) + lab = lab + ' (%s)'%', '.join(m) # and generate lab = cgi.escape(self._(lab)) @@ -2109,6 +2124,21 @@ if val not in options: options.insert(0, val) + if additional: + additional_fns = [] + props = linkcl.getprops() + for propname in additional: + prop = props[propname] + if isinstance(prop, hyperdb.Link): + cl = self._db.getclass(prop.classname) + labelprop = cl.labelprop() + fn = lambda optionid: cl.get(linkcl.get(optionid, + propname), + labelprop) + else: + fn = lambda optionid: linkcl.get(optionid, propname) + additional_fns.append(fn) + for optionid in options: # get the option value, and if it's None use an empty string option = linkcl.get(optionid, k) or '' @@ -2128,8 +2158,8 @@ lab = lab[:size-3] + '...' if additional: m = [] - for propname in additional: - m.append(linkcl.get(optionid, propname)) + for fn in additional_fns: + m.append(str(fn(optionid))) lab = lab + ' (%s)'%', '.join(m) # and generate
