*** rdbms_common.py Thu Jun 24 09:14:48 2004 --- rdbms_common.py_patched Sun Jun 27 00:25:30 2004 *************** *** 2422,2427 **** --- 2422,2434 ---- d = {} retire = 0 newid = None + if not "id" in propnames: + newid = self.db.newid(self.classname) + else: + for i in range(len(propnames)): + if propnames[i] == 'id': + newid = eval(proplist[i]) + break for i in range(len(propnames)): # Use eval to reverse the repr() used to output the CSV value = eval(proplist[i]) *************** *** 2431,2437 **** # "unmarshal" where necessary if propname == 'id': - newid = value continue elif propname == 'is retired': # is the item retired? --- 2438,2443 ---- *************** *** 2448,2453 **** --- 2454,2460 ---- continue elif isinstance(prop, hyperdb.Date): value = date.Date(value) + elif isinstance(prop, hyperdb.Interval): value = date.Interval(value) elif isinstance(prop, hyperdb.Password): *************** *** 2455,2464 **** pwd.unpack(value) value = pwd d[propname] = value - # get a new id if necessary - if newid is None: - newid = self.db.newid(self.classname) # insert new node or update existing? if not self.hasnode(newid): --- 2462,2472 ---- pwd.unpack(value) value = pwd d[propname] = value + if isinstance(prop, String): + if type(value) != type('') and type(value) != type(u''): + raise TypeError, 'new property "%s" not a string'%key + self.db.indexer.add_text((self.classname, newid, propname), value) # insert new node or update existing? if not self.hasnode(newid):