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
This commit is contained in:
+8
-4
@@ -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;
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
+12
-9
@@ -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;
|
||||
|
||||
@@ -681,7 +681,7 @@ class Screen:
|
||||
|
||||
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 @@ class Screen:
|
||||
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
|
||||
|
||||
@@ -109,12 +109,13 @@ class Wizard(InfoBar):
|
||||
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']
|
||||
|
||||
Reference in New Issue
Block a user