Manage error when saving record from Many2One
The save of the current record must be done at the same level as the validation. issue2614 review393001
This commit is contained in:
1 parent
bafd15808d
commit
e10ca956e5
3 files changed
+13
-14
No files matched your search
@@ -181,13 +181,13 @@ class Many2One(WidgetInterface):
|
||||
screen = self.get_screen()
|
||||
|
||||
def callback(result):
|
||||
if result and screen.save_current():
|
||||
if result:
|
||||
self.field.set_client(self.record,
|
||||
self.value_from_id(screen.current_record.id,
|
||||
screen.current_record.rec_name()))
|
||||
self.display(self.record, self.field)
|
||||
self.focus_out = True
|
||||
WinForm(screen, callback, new=True)
|
||||
WinForm(screen, callback, new=True, save_current=True)
|
||||
|
||||
def sig_edit(self, widget):
|
||||
if not common.MODELACCESS[self.get_model()]['read']:
|
||||
@@ -204,18 +204,15 @@ class Many2One(WidgetInterface):
|
||||
screen.load([self.id_from_value(self.field.get(self.record))])
|
||||
|
||||
def callback(result):
|
||||
if result and screen.save_current():
|
||||
if result:
|
||||
self.field.set_client(self.record,
|
||||
self.value_from_id(screen.current_record.id,
|
||||
screen.current_record.rec_name()),
|
||||
force_change=True)
|
||||
elif result:
|
||||
screen.display()
|
||||
return WinForm(screen, callback)
|
||||
self.focus_out = True
|
||||
self.display(self.record, self.field)
|
||||
self.changed = True
|
||||
WinForm(screen, callback)
|
||||
WinForm(screen, callback, save_current=True)
|
||||
return
|
||||
elif model and not self._readonly:
|
||||
domain = self.field.domain_get(self.record)
|
||||
|
||||
@@ -649,20 +649,17 @@ class M2O(Char):
|
||||
mode=['form'])
|
||||
|
||||
def open_callback(result):
|
||||
if result and screen.save_current():
|
||||
if result:
|
||||
value = (screen.current_record.id,
|
||||
screen.current_record.rec_name())
|
||||
field.set_client(record, value, force_change=True)
|
||||
elif result:
|
||||
screen.display()
|
||||
return WinForm(screen, open_callback)
|
||||
if callback:
|
||||
callback()
|
||||
if obj_id:
|
||||
screen.load([obj_id])
|
||||
WinForm(screen, open_callback)
|
||||
WinForm(screen, open_callback, save_current=True)
|
||||
else:
|
||||
WinForm(screen, open_callback, new=True)
|
||||
WinForm(screen, open_callback, new=True, save_current=True)
|
||||
|
||||
def search_remote(self, record, relation, ids=None, domain=None,
|
||||
context=None, callback=None):
|
||||
|
||||
@@ -16,12 +16,14 @@ class WinForm(NoModal):
|
||||
"Form window"
|
||||
|
||||
def __init__(self, screen, callback, view_type='form',
|
||||
new=False, many=False, domain=None, context=None):
|
||||
new=False, many=False, domain=None, context=None,
|
||||
save_current=False):
|
||||
NoModal.__init__(self)
|
||||
self.screen = screen
|
||||
self.callback = callback
|
||||
self.domain = domain
|
||||
self.context = context
|
||||
self.save_current = save_current
|
||||
self.prev_view = self.screen.current_view
|
||||
self.screen.screen_container.alternate_view = True
|
||||
switch_new = False
|
||||
@@ -375,6 +377,9 @@ class WinForm(NoModal):
|
||||
and self.screen.current_record is not None):
|
||||
validate = self.screen.current_record.validate(
|
||||
self.screen.current_view.get_fields())
|
||||
if validate and self.save_current:
|
||||
if not self.screen.save_current():
|
||||
validate = False
|
||||
if not validate:
|
||||
self.screen.set_cursor()
|
||||
self.screen.display()
|
||||
|
||||
Reference in new issue
Block a user