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 '

Roundup Issue Tracker: http://roundup-tracker.org/