]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/model/types.py
fixed some issues resulting from upgrading sqlalchemy, made more ORM-y
[bluechips.git] / bluechips / model / types.py
index 30c2ce31e93127e5ea88ad3444819e6a0cad2e32..d4454813bd7e5463fc513518359b755b53abd25f 100644 (file)
@@ -14,7 +14,9 @@ class Currency(object):
     __metaclass__ = SmartSubclass(int)
     __old_values__ = WeakValueDictionary()
     def __new__(cls, value):
-        if isinstance(value, str):
+        if value is None:
+            value = 0
+        elif isinstance(value, str):
             value = int(float(value) * 100)
         else:
             value = int(value)
@@ -73,7 +75,7 @@ class Currency(object):
         """
         Get to the formatted string without the dollar sign
         """
-        return str(self)[1:]
+        return str(self).replace('$', '')
     
     def __repr__(self):
         return '%s("%s")' % (self.__class__.__name__, str(self))
@@ -81,7 +83,7 @@ class Currency(object):
         sign = '-' if self.value < 0 else ''
         cents = abs(self.value) % 100
         dollars = (abs(self.value) - cents) / 100
-        return '$%s%s.%.02d' % (sign, dollars, cents)
+        return '%s$%s.%.02d' % (sign, dollars, cents)
 
 class DBCurrency(sa.types.TypeDecorator):
     """
@@ -97,3 +99,4 @@ class DBCurrency(sa.types.TypeDecorator):
     
     def convert_result_value(self, value, engine):
         return Currency(value)
+    process_result_value = convert_result_value