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
44Basics:
@@ -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