Only rebuild mptt tree one time per model in a database update

issue5118
review20501002
This commit is contained in:
Sergi Almacellas Abellana
2015-12-28 14:13:03 +01:00
parent 2e37bf7852
commit fc58438188
+9 -1
View File
@@ -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)