Files
tryton/trytond/backend/postgresql/fields.py
T

146 lines
2.6 KiB
Python

#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
import psycopg2
from trytond.backend import fields
class Boolean(fields.Boolean):
@staticmethod
def sql_type(field):
return ('bool', 'bool')
class Integer(fields.Integer):
@staticmethod
def sql_type(field):
return ('int4', 'int4')
class BigInteger(fields.BigInteger):
@staticmethod
def sql_type(field):
return ('int8', 'int8')
class Char(fields.Char):
@staticmethod
def sql_type(field):
if isinstance(field.size, int):
return ('varchar', 'varchar(%d)' % (field.size,))
return ('varchar', 'varchar')
class Sha(fields.Sha):
@staticmethod
def sql_type(field):
return ('varchar', 'varchar(40)')
class Text(fields.Text):
@staticmethod
def sql_type(field):
return ('text', 'text')
class Float(fields.Float):
@staticmethod
def sql_type(field):
return ('float8', 'float8')
class Numeric(fields.Numeric):
@staticmethod
def sql_type(field):
return ('numeric', 'numeric')
class Date(fields.Date):
@staticmethod
def sql_type(field):
return ('date', 'date')
class DateTime(fields.DateTime):
@staticmethod
def sql_type(field):
return ('timestamp', 'timestamp(0)')
class Timestamp(fields.Timestamp):
@staticmethod
def sql_type(field):
return ('timestamp', 'timestamp(6)')
class Time(fields.Time):
@staticmethod
def sql_type(field):
return ('time', 'time')
class Binary(fields.Binary):
@staticmethod
def sql_format(value):
return value and psycopg2.Binary(value) or None
@staticmethod
def sql_type(field):
return ('bytea', 'bytea')
class Selection(fields.Selection):
@staticmethod
def sql_type(field):
return ('varchar', 'varchar')
class Reference(fields.Reference):
@staticmethod
def sql_type(field):
return ('varchar', 'varchar')
class Many2One(fields.Many2One):
@staticmethod
def sql_type(field):
return ('int4', 'int4')
FIELDS = {
'boolean': Boolean,
'integer': Integer,
'biginteger': BigInteger,
'char': Char,
'sha': Sha,
'text': Text,
'float': Float,
'numeric': Numeric,
'date': Date,
'datetime': DateTime,
'timestamp': Timestamp,
'time': Time,
'binary': Binary,
'selection': Selection,
'reference': Reference,
'many2one': Many2One,
'one2many': fields.One2Many,
'many2many': fields.Many2Many,
'function': fields.Function,
'property': fields.Property,
}