Mercurial > p > roundup > code
diff roundup/backends/back_metakit.py @ 880:de3da99a7c02
Add Number and Boolean types to hyperdb.
Add conversion cases to web, mail & admin interfaces.
Add storage/serialization cases to back_anydbm & back_metakit.
| author | Gordon B. McMillan <gmcm@users.sourceforge.net> |
|---|---|
| date | Thu, 18 Jul 2002 11:17:31 +0000 |
| parents | b9da8729d8ff |
| children | 44eb237a8b3e |
line wrap: on
line diff
--- a/roundup/backends/back_metakit.py Thu Jul 18 07:01:54 2002 +0000 +++ b/roundup/backends/back_metakit.py Thu Jul 18 11:17:31 2002 +0000 @@ -455,6 +455,17 @@ setattr(row, key, str(value)) changes[key] = str(oldvalue) propvalues[key] = str(value) + + elif value is not None and isinstance(prop, hyperdb.Number): + setattr(row, key, int(value)) + changes[key] = oldvalue + propvalues[key] = value + + elif value is not None and isinstance(prop, hyperdb.Boolean): + bv = value != 0 + setattr(row, key, bv) + changes[key] = oldvalue + propvalues[key] = value oldnode[key] = oldvalue @@ -661,6 +672,14 @@ regexes[propname] = re.compile(v, re.I) elif propname == 'id': where[propname] = int(value) + elif isinstance(prop, hyperdb.Boolean): + if type(value) is _STRINGTYPE: + bv = value.lower() in ('yes', 'true', 'on', '1') + else: + bv = value + where[propname] = bv + elif isinstance(prop, hyperdb.Number): + where[propname] = int(value) else: where[propname] = str(value) v = self.getview() @@ -891,6 +910,8 @@ hyperdb.Multilink : _fetchML, hyperdb.Interval : date.Interval, hyperdb.Password : _fetchPW, + hyperdb.Boolean : lambda n: n, + hyperdb.Number : lambda n: n, } class FileName(hyperdb.String): @@ -904,6 +925,8 @@ hyperdb.Multilink : 'V', hyperdb.Interval : 'S', hyperdb.Password : 'S', + hyperdb.Boolean : 'I', + hyperdb.Number : 'I', } class FileClass(Class): ' like Class but with a content property '
