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']

Reply via email to