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:
1 parent
8dee983fc8
commit
d364737e28
2 files changed
+6
-3
No files matched your search
@@ -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:
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in new issue
Block a user