Skip to content

Commit 6d6cc68

Browse files
author
Richard Jones
committed
fix RDBMS import (thanks Tamer Fahmy)
1 parent 7da5001 commit 6d6cc68

File tree

2 files changed

+29
-16
lines changed

2 files changed

+29
-16
lines changed

CHANGES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Fixed:
1010
- have roundup server pass though the cause of a "403 Forbidden" response
1111
- fix schema mutation in sqlite backends (thanks Tamer Fahmy)
1212
- make popup Javascript IE 5.0 friendly (thanks Marlon van den Berg)
13+
- fix RDBMS import (thanks Tamer Fahmy)
1314

1415

1516
2004-05-06 0.7.0

roundup/backends/rdbms_common.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: rdbms_common.py,v 1.98 2004-05-06 01:12:22 richard Exp $
1+
# $Id: rdbms_common.py,v 1.98.2.1 2004-05-10 01:27:59 richard Exp $
22
''' Relational database (SQL) backend common code.
33
44
Basics:
@@ -979,20 +979,7 @@ def addjournal(self, classname, nodeid, action, params, creator=None,
979979

980980
# make the journalled data marshallable
981981
if isinstance(params, type({})):
982-
properties = self.getclass(classname).getprops()
983-
for param, value in params.items():
984-
if not value:
985-
continue
986-
property = properties[param]
987-
cvt = self.hyperdb_to_sql_value[property.__class__]
988-
if isinstance(property, Password):
989-
params[param] = cvt(value)
990-
elif isinstance(property, Date):
991-
params[param] = cvt(value)
992-
elif isinstance(property, Interval):
993-
params[param] = cvt(value)
994-
elif isinstance(property, Boolean):
995-
params[param] = cvt(value)
982+
self._journal_marshal(params, classname)
996983

997984
params = repr(params)
998985

@@ -1011,13 +998,38 @@ def setjournal(self, classname, nodeid, journal):
1011998
# create the journal entry
1012999
cols = 'nodeid,date,tag,action,params'
10131000

1001+
dc = self.hyperdb_to_sql_value[hyperdb.Date]
10141002
for nodeid, journaldate, journaltag, action, params in journal:
10151003
if __debug__:
10161004
print >>hyperdb.DEBUG, 'setjournal', (nodeid, journaldate,
10171005
journaltag, action, params)
1018-
self.save_journal(classname, cols, nodeid, journaldate,
1006+
1007+
# make the journalled data marshallable
1008+
if isinstance(params, type({})):
1009+
self._journal_marshal(params, classname)
1010+
params = repr(params)
1011+
1012+
self.save_journal(classname, cols, nodeid, dc(journaldate),
10191013
journaltag, action, params)
10201014

1015+
def _journal_marshal(self, params, classname):
1016+
'''Convert the journal params values into safely repr'able and
1017+
eval'able values.'''
1018+
properties = self.getclass(classname).getprops()
1019+
for param, value in params.items():
1020+
if not value:
1021+
continue
1022+
property = properties[param]
1023+
cvt = self.hyperdb_to_sql_value[property.__class__]
1024+
if isinstance(property, Password):
1025+
params[param] = cvt(value)
1026+
elif isinstance(property, Date):
1027+
params[param] = cvt(value)
1028+
elif isinstance(property, Interval):
1029+
params[param] = cvt(value)
1030+
elif isinstance(property, Boolean):
1031+
params[param] = cvt(value)
1032+
10211033
def getjournal(self, classname, nodeid):
10221034
''' get the journal for id
10231035
'''

0 commit comments

Comments
 (0)