Reviewers: ,
Please review this at http://codereview.tryton.org/393001/ Affected files: M tryton/gui/window/view_form/view/form_gtk/many2one.py M tryton/gui/window/view_form/view/list_gtk/parser.py M tryton/gui/window/win_form.py Index: tryton/gui/window/view_form/view/form_gtk/many2one.py =================================================================== --- a/tryton/gui/window/view_form/view/form_gtk/many2one.py +++ b/tryton/gui/window/view_form/view/form_gtk/many2one.py @@ -181,13 +181,13 @@ 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 @@ 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) Index: tryton/gui/window/view_form/view/list_gtk/parser.py =================================================================== --- a/tryton/gui/window/view_form/view/list_gtk/parser.py +++ b/tryton/gui/window/view_form/view/list_gtk/parser.py @@ -647,20 +647,17 @@ 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): Index: tryton/gui/window/win_form.py =================================================================== --- a/tryton/gui/window/win_form.py +++ b/tryton/gui/window/win_form.py @@ -16,12 +16,14 @@ "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 @@ 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() @@ -389,7 +394,6 @@ result = False else: result = response_id not in cancel_responses - self.callback(result) self.destroy() def new(self): -- [email protected] mailing list
