Only rebuild mptt tree one time per model in a database update
issue5118 review20501002
This commit is contained in:
@@ -128,6 +128,8 @@ class ModelSQL(ModelStorage):
|
||||
def __register__(cls, module_name):
|
||||
TableHandler = backend.get('TableHandler')
|
||||
super(ModelSQL, cls).__register__(module_name)
|
||||
pool = Pool()
|
||||
ModelField = pool.get('ir.model.field')
|
||||
|
||||
if cls.table_query():
|
||||
return
|
||||
@@ -205,7 +207,13 @@ class ModelSQL(ModelStorage):
|
||||
if isinstance(field, fields.Many2One) \
|
||||
and field.model_name == cls.__name__ \
|
||||
and field.left and field.right:
|
||||
cls._rebuild_tree(field_name, None, 0)
|
||||
irfields = ModelField.search([
|
||||
('model.model', '=', field.model_name),
|
||||
('module', '=', module_name),
|
||||
('name', 'in', [field.left, field.right]),
|
||||
])
|
||||
if irfields:
|
||||
cls._rebuild_tree(field_name, None, 0)
|
||||
|
||||
for ident, constraint, _ in cls._sql_constraints:
|
||||
table.add_constraint(ident, constraint)
|
||||
|
||||
Reference in New Issue
Block a user