Mercurial > p > roundup > code
diff roundup/backends/back_metakit.py @ 1484:b3f2484babce
fixes to import/export
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Fri, 28 Feb 2003 03:33:46 +0000 |
| parents | 5a01e90b7dc9 |
| children | e6ac4e074acb |
line wrap: on
line diff
--- a/roundup/backends/back_metakit.py Fri Feb 28 03:33:25 2003 +0000 +++ b/roundup/backends/back_metakit.py Fri Feb 28 03:33:46 2003 +0000 @@ -610,7 +610,7 @@ try: v = int(value) except ValueError: - raise TypeError, "%s (%s) is not numeric" % (key, repr(value)) + raise TypeError, "%s (%s) is not numeric"%(key, repr(value)) setattr(row, key, v) changes[key] = oldvalue propvalues[key] = value @@ -619,7 +619,7 @@ if value is None: bv = 0 elif value not in (0,1): - raise TypeError, "%s (%s) is not boolean" % (key, repr(value)) + raise TypeError, "%s (%s) is not boolean"%(key, repr(value)) else: bv = value setattr(row, key, bv) @@ -818,6 +818,12 @@ l.append(str(row.id)) return l + def getnodeids(self): + l = [] + for row in self.getview(): + l.append(str(row.id)) + return l + def count(self): return len(self.getview()) @@ -1098,11 +1104,12 @@ view = self.getview(1) for i in range(len(propnames)): value = eval(proplist[i]) + if not value: + continue propname = propnames[i] prop = properties[propname] if propname == 'id': - newid = value - value = int(value) + newid = value = int(value) elif isinstance(prop, hyperdb.Date): value = int(calendar.timegm(value)) elif isinstance(prop, hyperdb.Interval): @@ -1111,20 +1118,33 @@ value = int(value) elif isinstance(prop, hyperdb.Boolean): value = int(value) - elif isinstance(prop, hyperdb.Link): + elif isinstance(prop, hyperdb.Link) and value: value = int(value) elif isinstance(prop, hyperdb.Multilink): - value = map(int, value) + # we handle multilinks separately + continue d[propname] = value # is the item retired? if int(proplist[-1]): d['_isdel'] = 1 - # XXX this is BROKEN for reasons I don't understand! - ndx = view.append(d) + view.append(d) + ndx = view.find(id=newid) + row = view[ndx] + for i in range(len(propnames)): + value = eval(proplist[i]) + propname = propnames[i] + prop = properties[propname] + if not isinstance(prop, hyperdb.Multilink): + continue + sv = getattr(row, propname) + for entry in value: + sv.append(int(entry)) + + self.db.dirty = 1 creator = d.get('creator', 0) creation = d.get('creation', 0) - self.db.addjournal(self.classname, newid, _CREATE, {}, creator, + self.db.addjournal(self.classname, str(newid), _CREATE, {}, creator, creation) return newid
