Use symbol_set from fields for default value

This commit is contained in:
Cédric Krier committed 2008-08-14 19:00:40 +02:00
1 parent 0dfa2d6c4b
commit 7efebdabdf
2 files changed
+20 -24

No files matched your search

+11 -7
View File
@@ -402,15 +402,19 @@ class ORM(object):
table = table_handler(cursor, self._table, self._name, module_name)
if self._log_access:
logs = (
('create_date', 'timestamp', 'TIMESTAMP'),
('write_date', 'timestamp', 'TIMESTAMP'),
('create_date', 'timestamp', 'TIMESTAMP',
fields.DateTime._symbol_set),
('write_date', 'timestamp', 'TIMESTAMP',
fields.DateTime._symbol_set),
('create_uid', 'int4',
'INTEGER REFERENCES res_user ON DELETE SET NULL'),
'INTEGER REFERENCES res_user ON DELETE SET NULL',
fields.Integer._symbol_set),
('write_uid', 'int4',
'INTEGER REFERENCES res_user ON DELETE SET NULL'),
'INTEGER REFERENCES res_user ON DELETE SET NULL',
fields.Integer._symbol_set),
)
for log in logs:
table.add_raw_column(log[0], (log[1], log[2]), migrate=False)
table.add_raw_column(log[0], (log[1], log[2]), log[3], migrate=False)
for field_name, field in self._columns.iteritems():
default_fun = None
if field_name in (
@@ -439,8 +443,8 @@ class ORM(object):
return unpack_result
default_fun = unpack_wrapper(default_fun)
table.add_raw_column(
field_name, field.sql_type(), default_fun, field.size)
table.add_raw_column(field_name, field.sql_type(),
field._symbol_set, default_fun, field.size)
if isinstance(field, (fields.Integer, fields.Float)):
table.db_default(field_name, 0)
+9 -17
View File
@@ -342,8 +342,8 @@ class table_handler:
'ALTER COLUMN "' + column_name + '" SET DEFAULT %s',
(value,))
def add_raw_column(self, column_name, column_type, default_fun=None,
field_size=None, migrate = True):
def add_raw_column(self, column_name, column_type, symbol_set,
default_fun=None, field_size=None, migrate=True):
if column_name in self.table:
if not migrate:
@@ -383,21 +383,12 @@ class table_handler:
self.cursor.execute('ALTER TABLE "%s" ADD COLUMN "%s" %s' %
(self.table_name, column_name, column_type))
# Populate column with default values:
default = None
if default_fun is not None:
default = default_fun(self.cursor, 0, {})
if (default is not False) and (default is not False):
self.cursor.execute('UPDATE "' + self.table_name + '" '\
'SET "' + column_name + '" = %s',
(default,))
else:
self.cursor.execute('UPDATE "' + self.table_name + '" '\
'SET "' + column_name + '" = NULL')
elif column_type == 'bool':
self.cursor.execute('UPDATE "' + self.table_name + '" '\
'SET "' + column_name + '" = false')
elif column_type in ('int4', 'float8'):
self.cursor.execute('UPDATE "' + self.table_name + '" '\
'SET "' + column_name + '" = 0')
self.cursor.execute('UPDATE "' + self.table_name + '" '\
'SET "' + column_name + '" = ' + symbol_set[0],
(symbol_set[1](default),))
self.update_definitions()
@@ -407,8 +398,9 @@ class table_handler:
rtable = table_handler(
self.cursor, relation_table, object_name=None,
module_name= self.module_name)
rtable.add_raw_column(rtable_from, ('int4', 'int4'))
rtable.add_raw_column(rtable_to, ('int4', 'int4'))
from osv.fields import Integer
rtable.add_raw_column(rtable_from, ('int4', 'int4'), Integer._symbol_set)
rtable.add_raw_column(rtable_to, ('int4', 'int4'), Integer._symbol_set)
rtable.add_fk(rtable_from, self.table_name)
rtable.add_fk(rtable_to, other_table)
rtable.index_action(rtable_from, 'add')