Mercurial > p > roundup > code
diff roundup/backends/rdbms_common.py @ 2275:3197e37346de
merge from maint-0-7
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Mon, 10 May 2004 01:30:02 +0000 |
| parents | 0b198ed096af |
| children | fa2f7ba34399 |
line wrap: on
line diff
--- a/roundup/backends/rdbms_common.py Mon May 10 00:42:49 2004 +0000 +++ b/roundup/backends/rdbms_common.py Mon May 10 01:30:02 2004 +0000 @@ -1,4 +1,4 @@ -# $Id: rdbms_common.py,v 1.98 2004-05-06 01:12:22 richard Exp $ +# $Id: rdbms_common.py,v 1.99 2004-05-10 01:30:02 richard Exp $ ''' Relational database (SQL) backend common code. Basics: @@ -979,20 +979,7 @@ # make the journalled data marshallable if isinstance(params, type({})): - properties = self.getclass(classname).getprops() - for param, value in params.items(): - if not value: - continue - property = properties[param] - cvt = self.hyperdb_to_sql_value[property.__class__] - if isinstance(property, Password): - params[param] = cvt(value) - elif isinstance(property, Date): - params[param] = cvt(value) - elif isinstance(property, Interval): - params[param] = cvt(value) - elif isinstance(property, Boolean): - params[param] = cvt(value) + self._journal_marshal(params, classname) params = repr(params) @@ -1011,13 +998,38 @@ # create the journal entry cols = 'nodeid,date,tag,action,params' + dc = self.hyperdb_to_sql_value[hyperdb.Date] for nodeid, journaldate, journaltag, action, params in journal: if __debug__: print >>hyperdb.DEBUG, 'setjournal', (nodeid, journaldate, journaltag, action, params) - self.save_journal(classname, cols, nodeid, journaldate, + + # make the journalled data marshallable + if isinstance(params, type({})): + self._journal_marshal(params, classname) + params = repr(params) + + self.save_journal(classname, cols, nodeid, dc(journaldate), journaltag, action, params) + def _journal_marshal(self, params, classname): + '''Convert the journal params values into safely repr'able and + eval'able values.''' + properties = self.getclass(classname).getprops() + for param, value in params.items(): + if not value: + continue + property = properties[param] + cvt = self.hyperdb_to_sql_value[property.__class__] + if isinstance(property, Password): + params[param] = cvt(value) + elif isinstance(property, Date): + params[param] = cvt(value) + elif isinstance(property, Interval): + params[param] = cvt(value) + elif isinstance(property, Boolean): + params[param] = cvt(value) + def getjournal(self, classname, nodeid): ''' get the journal for id '''
