Mercurial > p > roundup > code
diff roundup/cgi/templating.py @ 1104:d759c3cb1f06
Remeber values in edit/new submission error pages.
Some work done on query editing (search refinement)
Fixed logout link to work with cgi-bin
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Tue, 10 Sep 2002 23:05:00 +0000 |
| parents | db787cef1385 |
| children | a95428868bf4 |
line wrap: on
line diff
--- a/roundup/cgi/templating.py Tue Sep 10 12:44:42 2002 +0000 +++ b/roundup/cgi/templating.py Tue Sep 10 23:05:00 2002 +0000 @@ -202,7 +202,17 @@ l = self._client.db.classes.keys() l.sort() return [HTMLClass(self._client, cn) for cn in l] - + +def lookupIds(db, prop, ids, num_re=re.compile('-?\d+')): + cl = db.getclass(prop.classname) + l = [] + for entry in ids: + if num_re.match(entry): + l.append(entry) + else: + l.append(cl.lookup(entry)) + return l + class HTMLClass: ''' Accesses through a class (either through *class* or *db.<classname>*) ''' @@ -232,13 +242,29 @@ prop = self._props[item] # look up the correct HTMLProperty class + form = self._client.form for klass, htmlklass in propclasses: - if isinstance(prop, hyperdb.Multilink): - value = [] + if not isinstance(prop, klass): + continue + if form.has_key(item): + if isinstance(prop, hyperdb.Multilink): + value = lookupIds(self._db, prop, + handleListCGIValue(form[item])) + elif isinstance(prop, hyperdb.Link): + value = form[item].value.strip() + if value: + value = lookupIds(self._db, prop, [value])[0] + else: + value = None + else: + value = form[item].value.strip() or None else: - value = None - if isinstance(prop, klass): - return htmlklass(self._client, '', prop, item, value) + if isinstance(prop, hyperdb.Multilink): + value = [] + else: + value = None + print (prop, value) + return htmlklass(self._client, '', prop, item, value) # no good raise KeyError, item @@ -987,7 +1013,10 @@ if isinstance(value, type([])): return [value.value for value in value] else: - return value.value.split(',') + value = value.value.strip() + if not value: + return [] + return value.split(',') class ShowDict: ''' A convenience access to the :columns index parameters
