diff roundup/backends/back_metakit.py @ 927:51519406b73e

web forms may now unset Link values (like assignedto)
author Richard Jones <richard@users.sourceforge.net>
date Wed, 31 Jul 2002 23:57:37 +0000
parents 3216c4f06ec4
children 3c344e942055
line wrap: on
line diff
--- a/roundup/backends/back_metakit.py	Wed Jul 31 22:40:50 2002 +0000
+++ b/roundup/backends/back_metakit.py	Wed Jul 31 23:57:37 2002 +0000
@@ -324,9 +324,11 @@
             # do stuff based on the prop type
             if isinstance(prop, hyperdb.Link):
                 link_class = prop.classname
+                # must be a string or None
+                if value is not None and not isinstance(value, type('')):
+                    raise ValueError, 'property "%s" link value be a string'%(
+                        propname)
                 # if it isn't a number, it's a key
-                if type(value) != _STRINGTYPE:
-                    raise ValueError, 'link value must be String'
                 try:
                     int(value)
                 except ValueError:
@@ -336,7 +338,8 @@
                         raise IndexError, 'new property "%s": %s not a %s'%(
                             key, value, prop.classname)
 
-                if not self.db.getclass(link_class).hasnode(value):
+                if (value is not None and
+                        not self.db.getclass(link_class).hasnode(value)):
                     raise IndexError, '%s has no node %s'%(link_class, value)
 
                 setattr(row, key, int(value))
@@ -345,11 +348,13 @@
                 if self.do_journal and prop.do_journal:
                     # register the unlink with the old linked node
                     if oldvalue:
-                        self.db.addjournal(link_class, value, _UNLINK, (self.classname, str(row.id), key))
+                        self.db.addjournal(link_class, value, _UNLINK,
+                            (self.classname, str(row.id), key))
 
                     # register the link with the newly linked node
                     if value:
-                        self.db.addjournal(link_class, value, _LINK, (self.classname, str(row.id), key))
+                        self.db.addjournal(link_class, value, _LINK,
+                            (self.classname, str(row.id), key))
 
             elif isinstance(prop, hyperdb.Multilink):
                 if type(value) != _LISTTYPE:

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