Prevent signal when calling add_fields in set_on_change of O2M for issue693

This commit is contained in:
Cédric Krier committed 2008-12-22 19:38:01 +01:00
1 parent 2dcc33260b
commit 7e5d137db2
3 files changed
+7 -5

No files matched your search

+2 -1
View File
@@ -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)
+2 -2
View File
@@ -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)
+3 -2
View File
@@ -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 = {}