Mercurial > p > roundup > code
diff roundup/backends/back_anydbm.py @ 4534:0dd6bdeb2eb5
issue2550729: Fix password history display for anydbm backend...
...thanks to Ralf Hemmecke for reporting.
| author | Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net> |
|---|---|
| date | Wed, 28 Sep 2011 11:06:24 +0000 |
| parents | e572c5e28d0b |
| children | fd972e18b21a |
line wrap: on
line diff
--- a/roundup/backends/back_anydbm.py Mon Sep 26 07:51:42 2011 +0000 +++ b/roundup/backends/back_anydbm.py Wed Sep 28 11:06:24 2011 +0000 @@ -575,6 +575,21 @@ self.transactions.append((self.doSetJournal, (classname, nodeid, journal))) + def fix_journal(self, classname, journal): + """ fix password entries to correct type """ + pwprops = {} + for pn, prop in self.getclass(classname).properties.iteritems(): + if isinstance(prop, hyperdb.Password): + pwprops [pn] = 1 + if not pwprops: + return journal + for j in journal: + if j[3] == 'set': + for k, v in j[4].items(): + if k in pwprops: + j[4][k] = password.JournalPassword(j[4][k]) + return journal + def getjournal(self, classname, nodeid): """ get the journal for id @@ -611,7 +626,7 @@ raise if res: # we have unsaved journal entries, return them - return res + return self.fix_journal (classname, res) raise IndexError('no such %s %s'%(classname, nodeid)) try: journal = marshal.loads(db[nodeid]) @@ -619,14 +634,14 @@ db.close() if res: # we have some unsaved journal entries, be happy! - return res + return self.fix_journal (classname, res) raise IndexError('no such %s %s'%(classname, nodeid)) db.close() # add all the saved journal entries for this node for nodeid, date_stamp, user, action, params in journal: res.append((nodeid, date.Date(date_stamp), user, action, params)) - return res + return self.fix_journal (classname, res) def pack(self, pack_before): """ Delete all journal entries except "create" before 'pack_before'.
