comparison roundup/backends/rdbms_common.py @ 2274:86bb9c804b41 maint-0.7

fix RDBMS import (thanks Tamer Fahmy)
author Richard Jones <richard@users.sourceforge.net>
date Mon, 10 May 2004 01:27:59 +0000
parents 0b198ed096af
children 4fd7a1805544
comparison
equal deleted inserted replaced
2272:37bf760544f3 2274:86bb9c804b41
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 $
2 ''' Relational database (SQL) backend common code. 2 ''' Relational database (SQL) backend common code.
3 3
4 Basics: 4 Basics:
5 5
6 - map roundup classes to relational tables 6 - map roundup classes to relational tables
977 print >>hyperdb.DEBUG, 'addjournal', (nodeid, journaldate, 977 print >>hyperdb.DEBUG, 'addjournal', (nodeid, journaldate,
978 journaltag, action, params) 978 journaltag, action, params)
979 979
980 # make the journalled data marshallable 980 # make the journalled data marshallable
981 if isinstance(params, type({})): 981 if isinstance(params, type({})):
982 properties = self.getclass(classname).getprops() 982 self._journal_marshal(params, classname)
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)
996 983
997 params = repr(params) 984 params = repr(params)
998 985
999 dc = self.hyperdb_to_sql_value[hyperdb.Date] 986 dc = self.hyperdb_to_sql_value[hyperdb.Date]
1000 journaldate = dc(journaldate) 987 journaldate = dc(journaldate)
1009 self.arg), (nodeid,)) 996 self.arg), (nodeid,))
1010 997
1011 # create the journal entry 998 # create the journal entry
1012 cols = 'nodeid,date,tag,action,params' 999 cols = 'nodeid,date,tag,action,params'
1013 1000
1001 dc = self.hyperdb_to_sql_value[hyperdb.Date]
1014 for nodeid, journaldate, journaltag, action, params in journal: 1002 for nodeid, journaldate, journaltag, action, params in journal:
1015 if __debug__: 1003 if __debug__:
1016 print >>hyperdb.DEBUG, 'setjournal', (nodeid, journaldate, 1004 print >>hyperdb.DEBUG, 'setjournal', (nodeid, journaldate,
1017 journaltag, action, params) 1005 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),
1019 journaltag, action, params) 1013 journaltag, action, params)
1014
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)
1020 1032
1021 def getjournal(self, classname, nodeid): 1033 def getjournal(self, classname, nodeid):
1022 ''' get the journal for id 1034 ''' get the journal for id
1023 ''' 1035 '''
1024 # make sure the node exists 1036 # make sure the node exists

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