Use symbol_set from fields for default value
This commit is contained in:
1 parent
0dfa2d6c4b
commit
7efebdabdf
2 files changed
+20
-24
No files matched your search
+11
-7
@@ -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
@@ -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')
|
||||
|
||||
Reference in new issue
Block a user