[FIX] web: Repair web in single module

Since https://github.com/odoo/odoo/commit/344d82ca251bbba8f54e85d6b881cc92f8823f13 :

The `web_editor` module is no longer installed by default in default
databases since it now depends on the `mail` module. This caused a few
bugs inherent to the base modules to surface:

- in the `mock_server` file: performRpc was synchronous and threw
uncaught errors;
- in the webclient scss: the body did not have an assigned with and
height of 100%, which caused some positioning issues.

This commit fixes these problems in the base modules.

closes odoo/odoo#76921

X-original-commit: bc1b14ff8a7d412fbbc5987ed57e2d4cdd00a0a0
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
This commit is contained in:
Julien Mougenot
2021-09-22 06:51:09 +00:00
parent 491a54ca48
commit 6427086210
2 changed files with 32 additions and 26 deletions
@@ -2,6 +2,12 @@
font-size: $o-root-font-size;
}
html, body {
position: relative;
width: 100%;
height: 100%;
}
// ------------------------------------------------------------------
// General
// ------------------------------------------------------------------
@@ -1940,83 +1940,83 @@ var MockServer = Class.extend({
* promise should either be rejected or the call should throw an
* exception (@see performRpc for error handling).
*/
_performRpc: function (route, args) {
async _performRpc(route, args) {
switch (route) {
case '/web/dataset/call_button':
return Promise.resolve(this._mockCallButton(args));
return this._mockCallButton(args);
case '/web/action/load':
return Promise.resolve(this._mockLoadAction(args));
return this._mockLoadAction(args);
case '/web/dataset/search_read':
return Promise.resolve(this._mockSearchReadController(args));
return this._mockSearchReadController(args);
case '/web/dataset/resequence':
return Promise.resolve(this._mockResequence(args));
return this._mockResequence(args);
}
if (route.indexOf('/web/image') >= 0 || _.contains(['.png', '.jpg'], route.substr(route.length - 4))) {
return Promise.resolve();
return;
}
switch (args.method) {
case 'copy':
return Promise.resolve(this._mockCopy(args.model, args.args[0]));
return this._mockCopy(args.model, args.args[0]);
case 'create':
return Promise.resolve(this._mockCreate(args.model, args.args[0]));
return this._mockCreate(args.model, args.args[0]);
case 'fields_get':
return Promise.resolve(this._mockFieldsGet(args.model, args.args));
return this._mockFieldsGet(args.model, args.args);
case 'search_panel_select_range':
return Promise.resolve(this._mockSearchPanelSelectRange(args.model, args.args, args.kwargs));
return this._mockSearchPanelSelectRange(args.model, args.args, args.kwargs);
case 'search_panel_select_multi_range':
return Promise.resolve(this._mockSearchPanelSelectMultiRange(args.model, args.args, args.kwargs));
return this._mockSearchPanelSelectMultiRange(args.model, args.args, args.kwargs);
case 'load_views':
return Promise.resolve(this._mockLoadViews(args.model, args.kwargs));
return this._mockLoadViews(args.model, args.kwargs);
case 'name_get':
return Promise.resolve(this._mockNameGet(args.model, args.args));
return this._mockNameGet(args.model, args.args);
case 'name_create':
return Promise.resolve(this._mockNameCreate(args.model, args.args));
return this._mockNameCreate(args.model, args.args);
case 'name_search':
return Promise.resolve(this._mockNameSearch(args.model, args.args, args.kwargs));
return this._mockNameSearch(args.model, args.args, args.kwargs);
case 'onchange':
return Promise.resolve(this._mockOnchange(args.model, args.args, args.kwargs));
return this._mockOnchange(args.model, args.args, args.kwargs);
case 'read':
return Promise.resolve(this._mockRead(args.model, args.args, args.kwargs));
return this._mockRead(args.model, args.args, args.kwargs);
case 'read_group':
return Promise.resolve(this._mockReadGroup(args.model, args.kwargs));
return this._mockReadGroup(args.model, args.kwargs);
case 'web_read_group':
return Promise.resolve(this._mockWebReadGroup(args.model, args.kwargs));
return this._mockWebReadGroup(args.model, args.kwargs);
case 'read_progress_bar':
return Promise.resolve(this._mockReadProgressBar(args.model, args.kwargs));
return this._mockReadProgressBar(args.model, args.kwargs);
case 'search':
return Promise.resolve(this._mockSearch(args.model, args.args, args.kwargs));
return this._mockSearch(args.model, args.args, args.kwargs);
case 'search_count':
return Promise.resolve(this._mockSearchCount(args.model, args.args));
return this._mockSearchCount(args.model, args.args);
case 'search_read':
return Promise.resolve(this._mockSearchRead(args.model, args.args, args.kwargs));
return this._mockSearchRead(args.model, args.args, args.kwargs);
case 'unlink':
return Promise.resolve(this._mockUnlink(args.model, args.args));
return this._mockUnlink(args.model, args.args);
case 'write':
return Promise.resolve(this._mockWrite(args.model, args.args));
return this._mockWrite(args.model, args.args);
}
var model = this.data[args.model];
if (model && typeof model[args.method] === 'function') {
return Promise.resolve(this.data[args.model][args.method](args.args, args.kwargs));
return this.data[args.model][args.method](args.args, args.kwargs);
}
throw new Error("Unimplemented route: " + route);