Prevent signal when calling add_fields in set_on_change of O2M for issue693
This commit is contained in:
1 parent
2dcc33260b
commit
7e5d137db2
3 files changed
+7
-5
No files matched your search
@@ -525,7 +525,8 @@ class O2MField(CharField):
|
||||
|
||||
mod = None
|
||||
if value and value.get('add') or value.get('update', []):
|
||||
model.value[self.name].add_fields(fields, model.value[self.name])
|
||||
model.value[self.name].add_fields(fields, model.value[self.name],
|
||||
signal=False)
|
||||
for record in value.get('add', []):
|
||||
mod = model.value[self.name].model_new(default=False)
|
||||
model.value[self.name].model_add(mod)
|
||||
|
||||
@@ -322,7 +322,7 @@ class ModelRecordGroup(SignalEvent):
|
||||
model.value[fname] = self.mfields[fname].create(model)
|
||||
return to_add
|
||||
|
||||
def add_fields(self, fields, models, context=None):
|
||||
def add_fields(self, fields, models, context=None, signal=True):
|
||||
if context is None:
|
||||
context = {}
|
||||
to_add = self.add_fields_custom(fields, models)
|
||||
@@ -366,7 +366,7 @@ class ModelRecordGroup(SignalEvent):
|
||||
if field_to_add not in values:
|
||||
values[field_to_add] = False
|
||||
for mod in new:
|
||||
mod.set_default(values)
|
||||
mod.set_default(values, signal=signal)
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.models)
|
||||
|
||||
@@ -244,13 +244,14 @@ class ModelRecord(SignalEvent):
|
||||
for name, mfield in self.mgroup.mfields.items()])
|
||||
return value
|
||||
|
||||
def set_default(self, val):
|
||||
def set_default(self, val, signal=True):
|
||||
for fieldname, value in val.items():
|
||||
if fieldname not in self.mgroup.mfields:
|
||||
continue
|
||||
self.mgroup.mfields[fieldname].set_default(self, value)
|
||||
self._loaded = True
|
||||
self.signal('record-changed')
|
||||
if signal:
|
||||
self.signal('record-changed')
|
||||
|
||||
def set(self, val, modified=False, signal=True):
|
||||
later = {}
|
||||
|
||||
Reference in new issue
Block a user