Mercurial > p > roundup > code
changeset 2472:f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Wed, 16 Jun 2004 03:54:00 +0000 |
| parents | 31cd032291c5 |
| children | 54a0869b92e4 |
| files | CHANGES.txt roundup/backends/rdbms_common.py test/db_test_base.py |
| diffstat | 3 files changed, 19 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES.txt Wed Jun 16 00:29:54 2004 +0000 +++ b/CHANGES.txt Wed Jun 16 03:54:00 2004 +0000 @@ -21,6 +21,7 @@ - allow list of values for id, Number and Boolean filtering in anydbm backend - fixed some more mysql 0.6->0.7 upgrade bugs (sf bug 950410) +- fixed Boolean values in postgresql (sf bugs 972546 and 972600) 2004-06-10 0.7.4
--- a/roundup/backends/rdbms_common.py Wed Jun 16 00:29:54 2004 +0000 +++ b/roundup/backends/rdbms_common.py Wed Jun 16 03:54:00 2004 +0000 @@ -1,4 +1,4 @@ -# $Id: rdbms_common.py,v 1.109 2004-06-14 03:36:11 richard Exp $ +# $Id: rdbms_common.py,v 1.110 2004-06-16 03:54:00 richard Exp $ ''' Relational database (SQL) backend common code. Basics: @@ -53,6 +53,12 @@ except: return float(num) +def _bool_cvt(value): + if value in ('TRUE', 'FALSE'): + return {'TRUE': 1, 'FALSE': 0}[value] + # assume it's a number returned from the db API + return int(value) + class Database(FileStorage, hyperdb.Database, roundupdb.Database): ''' Wrapper around an SQL database that presents a hyperdb interface. @@ -740,7 +746,7 @@ prop = props[col[1:]] value = values[col[1:]] - if value: + if value is not None: value = self.hyperdb_to_sql_value[prop.__class__](value) vals.append(value) vals.append(nodeid) @@ -880,7 +886,7 @@ hyperdb.Link : str, hyperdb.Interval : date.Interval, hyperdb.Password : lambda x: password.Password(encrypted=x), - hyperdb.Boolean : int, + hyperdb.Boolean : _bool_cvt, hyperdb.Number : _num_cvt, hyperdb.Multilink : lambda x: x, # used in journal marshalling }
--- a/test/db_test_base.py Wed Jun 16 00:29:54 2004 +0000 +++ b/test/db_test_base.py Wed Jun 16 03:54:00 2004 +0000 @@ -15,7 +15,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: db_test_base.py,v 1.31 2004-06-13 01:05:46 richard Exp $ +# $Id: db_test_base.py,v 1.32 2004-06-16 03:54:00 richard Exp $ import unittest, os, shutil, errno, imp, sys, time, pprint @@ -263,11 +263,19 @@ self.assertEqual(self.db.issue.get(nid, "foo"), None) # Boolean + def testBooleanSet(self): + nid = self.db.user.create(username='one', assignable=1) + self.assertEqual(self.db.user.get(nid, "assignable"), 1) + nid = self.db.user.create(username='two', assignable=0) + self.assertEqual(self.db.user.get(nid, "assignable"), 0) + def testBooleanChange(self): userid = self.db.user.create(username='foo', assignable=1) self.assertEqual(1, self.db.user.get(userid, 'assignable')) self.db.user.set(userid, assignable=0) self.assertEqual(self.db.user.get(userid, 'assignable'), 0) + self.db.user.set(userid, assignable=1) + self.assertEqual(self.db.user.get(userid, 'assignable'), 1) def testBooleanUnset(self): nid = self.db.user.create(username='foo', assignable=1)
