Speed up adding record to One2Many via on_change

There is no need to trigger a group-changed for each record added to the same
Group because it will trigger a global display and a the O2MField._group_changed
which depends only on parent.

issue3966
review6331002
This commit is contained in:
Cédric Krier committed 2014-06-22 17:06:29 +02:00
1 parent 8dee983fc8
commit d364737e28
2 files changed
+6 -3

No files matched your search

+3 -1
View File
@@ -687,8 +687,10 @@ class O2MField(Field):
record.value[self.name].add_fields(fields, signal=False)
for index, vals in value.get('add', []):
new_record = record.value[self.name].new(default=False)
record.value[self.name].add(new_record, index)
record.value[self.name].add(new_record, index, signal=False)
new_record.set_on_change(vals)
if value.get('add'):
record.value[self.name].signal('group-changed', new_record)
for vals in value.get('update', []):
if 'id' not in vals:
+3 -2
View File
@@ -261,7 +261,7 @@ class Group(SignalEvent, list):
context = property(_get_context)
def add(self, record, position=-1):
def add(self, record, position=-1, signal=True):
if record.group is not self:
record.signal_unconnect(record.group)
record.group = self
@@ -281,7 +281,8 @@ class Group(SignalEvent, list):
self.current_idx = position
record.modified_fields.setdefault('id')
record.signal('record-modified')
self.signal('group-changed', record)
if signal:
self.signal('group-changed', record)
# Set parent field to trigger on_change
if self.parent and self.parent_name in self.fields:
field = self.fields[self.parent_name]