details: https://code.tryton.org/tryton/commit/404795ef1a6f
branch: default
user: Cédric Krier <[email protected]>
date: Tue Aug 25 12:26:08 2026 +0200
description:
Display the new record form of wizard after setting the default values
We must delay the display after the default values of the record has
been set
otherwise we may trigger unnecessary RPCs (like search/reading for
useless
domain).
Closes #15030
diffstat:
sao/src/screen.js | 12 ++++++++----
sao/src/wizard.js | 21 ++++++++++++---------
tryton/tryton/gui/window/view_form/screen/screen.py | 9 +++++----
tryton/tryton/gui/window/wizard.py | 3 ++-
4 files changed, 27 insertions(+), 18 deletions(-)
diffs (105 lines):
diff -r 78d8d12401ff -r 404795ef1a6f sao/src/screen.js
--- a/sao/src/screen.js Tue Aug 25 12:24:36 2026 +0200
+++ b/sao/src/screen.js Tue Aug 25 12:26:08 2026 +0200
@@ -1603,7 +1603,7 @@
return this.current_record.id;
}
},
- new_: function(default_=true, defaults=null) {
+ new_: function(default_=true, defaults=null, display=true) {
var previous_view = this.current_view;
var prm = jQuery.when();
if (this.current_view &&
@@ -1636,10 +1636,14 @@
if (previous_view.view_type == 'calendar') {
previous_view.set_default_date(record, selected_date);
}
- return this.display().then(() => {
- this.set_cursor(true, true);
+ if (display) {
+ return this.display().then(() => {
+ this.set_cursor(true, true);
+ return record;
+ });
+ } else {
return record;
- });
+ }
});
});
},
diff -r 78d8d12401ff -r 404795ef1a6f sao/src/wizard.js
--- a/sao/src/wizard.js Tue Aug 25 12:24:36 2026 +0200
+++ b/sao/src/wizard.js Tue Aug 25 12:26:08 2026 +0200
@@ -78,15 +78,18 @@
var view = result.view;
this.update(view.fields_view, view.buttons);
- prms.push(this.screen.new_(false).then(() => {
- return this.screen.current_record.set_default(
- view.defaults || {})
- .then(() => {
- this.screen.current_record.set(
- view.values || {});
- this.update_buttons();
- this.screen.set_cursor();
- });
+ prms.push(this.screen.new_(false, null, false)
+ .then(() => {
+ return this.screen.current_record.set_default(
+ view.defaults || {})
+ .then(() => {
+ this.screen.current_record.set(
+ view.values || {});
+ this.update_buttons();
+ return this.screen.display().then(()
=> {
+ this.screen.set_cursor();
+ });
+ });
}));
this.screen_state = view.state;
diff -r 78d8d12401ff -r 404795ef1a6f
tryton/tryton/gui/window/view_form/screen/screen.py
--- a/tryton/tryton/gui/window/view_form/screen/screen.py Tue Aug 25
12:24:36 2026 +0200
+++ b/tryton/tryton/gui/window/view_form/screen/screen.py Tue Aug 25
12:26:08 2026 +0200
@@ -681,7 +681,7 @@
return view
- def new(self, default=True, defaults=None):
+ def new(self, default=True, defaults=None, display=True):
previous_view = self.current_view
if self.current_view and self.current_view.view_type == 'calendar':
selected_date = self.current_view.get_selected_date()
@@ -698,9 +698,10 @@
if previous_view.view_type == 'calendar':
previous_view.set_default_date(record, selected_date)
self.current_record = record
- self.display()
- # Postpone set of the cursor to ensure widgets are allocated
- GLib.idle_add(self.set_cursor, True)
+ if display:
+ self.display()
+ # Postpone set of the cursor to ensure widgets are allocated
+ GLib.idle_add(self.set_cursor, True)
return self.current_record
@property
diff -r 78d8d12401ff -r 404795ef1a6f tryton/tryton/gui/window/wizard.py
--- a/tryton/tryton/gui/window/wizard.py Tue Aug 25 12:24:36 2026 +0200
+++ b/tryton/tryton/gui/window/wizard.py Tue Aug 25 12:26:08 2026 +0200
@@ -109,12 +109,13 @@
view = result['view']
self.update(view['fields_view'], view['buttons'])
- self.screen.new(default=False)
+ self.screen.new(default=False, display=False)
if 'defaults' in view:
self.screen.current_record.set_default(view['defaults'])
if 'values' in view:
self.screen.current_record.set(view['values'])
self.update_buttons()
+ self.screen.display()
self.screen.set_cursor()
self.screen_state = view['state']