Mercurial > p > roundup > code
diff roundup/backends/rdbms_common.py @ 5067:e424987d294a
Add support for an integer type to join the existing number type.
Commit patch supplied for issue2550886. This can be used for
properties used for ordering, counts etc. where a decimal point
isn't needed. Developed by Anthony (antmail). Doc updates written by
John Rouillard.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 05 Jun 2016 00:17:26 -0400 |
| parents | 5251e97b1de0 |
| children | 2b551b6b0830 |
line wrap: on
line diff
--- a/roundup/backends/rdbms_common.py Tue May 31 09:16:09 2016 +0200 +++ b/roundup/backends/rdbms_common.py Sun Jun 05 00:17:26 2016 -0400 @@ -57,7 +57,7 @@ # roundup modules from roundup import hyperdb, date, password, roundupdb, security, support from roundup.hyperdb import String, Password, Date, Interval, Link, \ - Multilink, DatabaseError, Boolean, Number, Node + Multilink, DatabaseError, Boolean, Number, Integer, Node from roundup.backends import locking from roundup.i18n import _ @@ -464,6 +464,7 @@ hyperdb.Password : 'VARCHAR(255)', hyperdb.Boolean : 'BOOLEAN', hyperdb.Number : 'REAL', + hyperdb.Integer : 'INTEGER', } def hyperdb_to_sql_datatype(self, propclass): @@ -871,6 +872,7 @@ hyperdb.Password : str, hyperdb.Boolean : lambda x: x and 'TRUE' or 'FALSE', hyperdb.Number : lambda x: x, + hyperdb.Integer : lambda x: x, hyperdb.Multilink : lambda x: x, # used in journal marshalling } @@ -1084,6 +1086,7 @@ hyperdb.Password : lambda x: password.Password(encrypted=x), hyperdb.Boolean : _bool_cvt, hyperdb.Number : _num_cvt, + hyperdb.Integer : int, hyperdb.Multilink : lambda x: x, # used in journal marshalling } @@ -1632,6 +1635,12 @@ except ValueError: raise TypeError('new property "%s" not numeric'%key) + elif value is not None and isinstance(prop, Integer): + try: + int(value) + except ValueError: + raise TypeError('new property "%s" not integer'%key) + elif value is not None and isinstance(prop, Boolean): try: int(value) @@ -1931,6 +1940,12 @@ except ValueError: raise TypeError('new property "%s" not numeric'%propname) + elif value is not None and isinstance(prop, Integer): + try: + int(value) + except ValueError: + raise TypeError('new property "%s" not integer'%propname) + elif value is not None and isinstance(prop, Boolean): try: int(value)
