Mercurial > p > roundup > code
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 |
