Soft validate the record when setting new fields

New field values may change the validity of the record.

issue5822
review30771002
This commit is contained in:
Cédric Krier committed 2016-11-21 20:57:20 +01:00
1 parent aad3958901
commit cc834fe9b3
1 file changed
+5 -1
+5 -1
View File
@@ -449,8 +449,9 @@ class Record(SignalEvent):
if signal:
self.signal('record-changed')
def set(self, val, signal=True):
def set(self, val, signal=True, validate=True):
later = {}
fieldnames = []
for fieldname, value in val.iteritems():
if fieldname == '_timestamp':
# Always keep the older timestamp
@@ -473,12 +474,15 @@ class Record(SignalEvent):
del self.value[field_rec_name]
self.group.fields[fieldname].set(self, value)
self._loaded.add(fieldname)
fieldnames.append(fieldname)
for fieldname, value in later.iteritems():
self.group.fields[fieldname].set(self, value)
self._loaded.add(fieldname)
for fieldname, fieldinfo in self.group.fields.iteritems():
if fieldinfo.attrs.get('autocomplete'):
self.do_autocomplete(fieldname)
if validate:
self.validate(fieldnames, softvalidation=True)
if signal:
self.signal('record-changed')