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)

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