Index: roundup/hyperdb.py =================================================================== RCS file: /cvsroot/roundup/roundup/roundup/hyperdb.py,v retrieving revision 1.46 diff -c -r1.46 hyperdb.py *** roundup/hyperdb.py 2002/01/07 10:42:23 1.46 --- roundup/hyperdb.py 2002/01/13 09:27:58 *************** *** 395,406 **** # get the node's dict d = self.db.getnode(self.classname, nodeid, cache=cache) - if not d.has_key(propname) and default is not _marker: - return default ! # get the value prop = self.properties[propname] # possibly convert the marshalled data to instances if isinstance(prop, Date): return date.Date(d[propname]) --- 395,409 ---- # get the node's dict d = self.db.getnode(self.classname, nodeid, cache=cache) ! # get the value (raises KeyError for invalid propnames, right?) prop = self.properties[propname] + # must never raise a KeyError for new node properties + # (which are valid, but not in d) + if not d.has_key(propname): + return default + # possibly convert the marshalled data to instances if isinstance(prop, Date): return date.Date(d[propname]) *************** *** 518,524 **** propvalues[key] = value #handle removals ! l = node[key] for id in l[:]: if id in value: continue --- 521,530 ---- propvalues[key] = value #handle removals ! try: ! l = node[key] ! except KeyError: ! l = [] for id in l[:]: if id in value: continue