Files
tryton/trytond/model/fields/numeric.py
T

32 lines
902 B
Python
Raw Normal View History

2009-02-03 18:58:25 +01:00
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
2013-09-06 22:32:37 +02:00
from decimal import Decimal
from sql import Query, Expression
2009-02-03 18:58:25 +01:00
2013-09-06 22:32:37 +02:00
from ...config import CONFIG
from .field import SQLType
from .float import Float
2009-02-03 18:58:25 +01:00
class Numeric(Float):
2009-03-01 13:37:31 +01:00
'''
2009-09-13 15:37:11 +02:00
Define a numeric field (``decimal``).
2009-03-01 13:37:31 +01:00
'''
2009-02-03 18:58:25 +01:00
_type = 'numeric'
2013-09-06 22:32:37 +02:00
@staticmethod
def sql_format(value):
if isinstance(value, (Query, Expression)):
return value
if value is None:
return None
if isinstance(value, (int, long)):
value = Decimal(str(value))
assert isinstance(value, Decimal)
return value
def sql_type(self):
db_type = CONFIG['db_type']
if db_type == 'mysql':
return SQLType('DECIMAL', 'DECIMAL(65, 30)')
return SQLType('NUMERIC', 'NUMERIC')