diff --git a/unserialize_field/ir_model_fields.py b/unserialize_field/ir_model_fields.py index 16c44d1d6..ea5d25cf4 100644 --- a/unserialize_field/ir_model_fields.py +++ b/unserialize_field/ir_model_fields.py @@ -32,8 +32,9 @@ class ir_model_fields(Model): for this in self.browse(cr, uid, ids, context=context): pool_obj = self.pool.get(this.model_id.model) - self.create_database_column(cr, uid, pool_obj, this.name) - while True: + needs_write = self.create_database_column( + cr, uid, pool_obj, this.name) + while needs_write: ids = pool_obj.search( cr, uid, [(this.serialization_field_id.name, '!=', '{}')], @@ -50,6 +51,7 @@ class ir_model_fields(Model): return True def create_database_column(self, cr, uid, pool_obj, field_name): + needs_write = True old = pool_obj._columns[field_name] field_declaration_args = [] field_declaration_kwargs = dict( @@ -75,12 +77,14 @@ class ir_model_fields(Model): elif old._type == 'one2many': field_declaration_args = [old._obj, old._fields_id] field_declaration_kwargs['limit'] = old._limit + needs_write = False elif old._type == 'many2many': field_declaration_args = [old._obj] field_declaration_kwargs['rel'] = old._rel field_declaration_kwargs['id1'] = old._id1 field_declaration_kwargs['id2'] = old._id2 field_declaration_kwargs['limit'] = old._limit + needs_write = False field_declaration = getattr(fields, old._type)( *field_declaration_args, @@ -88,6 +92,7 @@ class ir_model_fields(Model): pool_obj._columns[field_name] = field_declaration pool_obj._auto_init(cr, {'update_custom_fields': True}) + return needs_write def unserialize_field(self, cr, uid, pool_obj, read_record, serialization_field_name, field_name, @@ -101,3 +106,4 @@ class ir_model_fields(Model): read_record[serialization_field_name][field_name], }, context=context) + return True