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
         '''

Roundup Issue Tracker: http://roundup-tracker.org/