From 9a01c6a29cce785029f3eedf7568b1b1f8dacecb Mon Sep 17 00:00:00 2001 From: Arnold Moyaux Date: Mon, 3 Apr 2023 13:13:17 +0000 Subject: [PATCH] [FIX] mrp_subcontracting: only import needed files Follow the same behavior than project. Only import the code for the views. It's not a good idea to import all the backend since it's not needed and it could cause issue with extra features closes odoo/odoo#121669 closes odoo/odoo#119040 X-original-commit: 8f3f10731545f32d283772fc009733c1b43f536b Related: odoo/enterprise#41188 Related: odoo/enterprise#39987 Signed-off-by: William Henrotin (whe) --- addons/mrp_subcontracting/__manifest__.py | 96 ++++++++++++++++++- .../static/src/subcontracting_portal/main.js | 28 +++++- 2 files changed, 120 insertions(+), 4 deletions(-) diff --git a/addons/mrp_subcontracting/__manifest__.py b/addons/mrp_subcontracting/__manifest__.py index 9ad197244e5..2bcadbf8a8c 100644 --- a/addons/mrp_subcontracting/__manifest__.py +++ b/addons/mrp_subcontracting/__manifest__.py @@ -37,8 +37,100 @@ 'mrp_subcontracting/static/src/components/**/*', ], 'mrp_subcontracting.webclient': [ - ('include', 'web.assets_backend'), - ('remove', 'web/static/src/webclient/menus/*.js'), + ('include', 'web._assets_helpers'), + ('include', 'web._assets_backend_helpers'), + + 'web/static/src/scss/pre_variables.scss', + 'web/static/lib/bootstrap/scss/_variables.scss', + + ('include', 'web._assets_bootstrap'), + + 'base/static/src/css/modules.css', + + 'web/static/src/core/utils/transitions.scss', + 'web/static/src/core/**/*', + 'web/static/src/search/**/*', + 'web/static/src/views/*.js', + 'web/static/src/views/*.xml', + 'web/static/src/views/*.scss', + 'web/static/src/views/fields/**/*', + 'web/static/src/views/form/**/*', + 'web/static/src/views/kanban/**/*', + 'web/static/src/views/list/**/*', + 'web/static/src/views/view_button/**/*', + 'web/static/src/views/view_components/**/*', + 'web/static/src/views/view_dialogs/**/*', + 'web/static/src/views/widgets/**/*', + 'web/static/src/webclient/**/*', + ('remove', 'web/static/src/webclient/navbar/navbar.scss'), # already in assets_common + ('remove', 'web/static/src/webclient/clickbot/clickbot.js'), # lazy loaded + ('remove', 'web/static/src/views/form/button_box/*.scss'), + + # remove the report code and whitelist only what's needed + ('remove', 'web/static/src/webclient/actions/reports/**/*'), + 'web/static/src/webclient/actions/reports/*.js', + 'web/static/src/webclient/actions/reports/*.xml', + + 'web/static/src/env.js', + + 'web/static/lib/jquery.scrollTo/jquery.scrollTo.js', + 'web/static/lib/py.js/lib/py.js', + 'web/static/lib/py.js/lib/py_extras.js', + 'web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js', + + 'web/static/src/legacy/scss/fields.scss', + 'web/static/src/legacy/scss/views.scss', + 'web/static/src/legacy/scss/form_view.scss', + 'web/static/src/legacy/scss/list_view.scss', + + 'base/static/src/scss/res_partner.scss', + + # Form style should be computed before + 'web/static/src/views/form/button_box/*.scss', + + 'web/static/src/legacy/action_adapters.js', + 'web/static/src/legacy/legacy_service_provider.js', + 'web/static/src/legacy/legacy_client_actions.js', + 'web/static/src/legacy/legacy_dialog.js', + 'web/static/src/legacy/legacy_load_views.js', + 'web/static/src/legacy/legacy_promise_error_handler.js', + 'web/static/src/legacy/legacy_rpc_error_handler.js', + 'web/static/src/legacy/root_widget.js', + 'web/static/src/legacy/legacy_setup.js', + 'web/static/src/legacy/root_widget.js', + 'web/static/src/legacy/backend_utils.js', + 'web/static/src/legacy/utils.js', + 'web/static/src/legacy/web_client.js', + 'web/static/src/legacy/js/chrome/*', + 'web/static/src/legacy/js/components/*', + 'web/static/src/legacy/js/control_panel/*', + 'web/static/src/legacy/js/core/domain.js', + 'web/static/src/legacy/js/core/mvc.js', + 'web/static/src/legacy/js/core/py_utils.js', + 'web/static/src/legacy/js/core/context.js', + 'web/static/src/legacy/js/core/misc.js', + 'web/static/src/legacy/js/fields/abstract_field.js', + 'web/static/src/legacy/js/fields/basic_fields.js', + 'web/static/src/legacy/js/fields/field_utils.js', + 'web/static/src/legacy/js/fields/relational_fields.js', + 'web/static/src/legacy/js/fields/field_registry.js', + 'web/static/src/legacy/js/fields/field_utils.js', + 'web/static/src/legacy/js/views/abstract_model.js', + 'web/static/src/legacy/js/views/basic/basic_model.js', + 'web/static/src/legacy/js/views/view_utils.js', + 'web/static/src/legacy/js/services/data_manager.js', + 'web/static/src/legacy/js/services/session.js', + 'web/static/src/legacy/js/tools/tools.js', + 'web/static/src/legacy/js/views/**/*', + 'web/static/src/legacy/js/widgets/date_picker.js', + 'web/static/src/legacy/js/widgets/domain_selector_dialog.js', + 'web/static/src/legacy/js/widgets/domain_selector.js', + 'web/static/src/legacy/js/widgets/model_field_selector.js', + 'web/static/src/legacy/js/widgets/model_field_selector_popover.js', + 'web/static/src/legacy/js/env.js', + 'web/static/src/legacy/js/owl_compatibility.js', + 'web/static/src/legacy/pseudo_web_client.js', + 'mrp_subcontracting/static/src/subcontracting_portal/*', 'web/static/src/start.js', 'web/static/src/legacy/legacy_setup.js', diff --git a/addons/mrp_subcontracting/static/src/subcontracting_portal/main.js b/addons/mrp_subcontracting/static/src/subcontracting_portal/main.js index bf2fe254fbd..8ab4289133f 100644 --- a/addons/mrp_subcontracting/static/src/subcontracting_portal/main.js +++ b/addons/mrp_subcontracting/static/src/subcontracting_portal/main.js @@ -1,5 +1,29 @@ /** @odoo-module **/ -import { startWebClient } from '@web/start'; -import { SubcontractingPortalWebClient } from './subcontracting_portal'; +import { startWebClient } from "@web/start"; +import { SubcontractingPortalWebClient } from "./subcontracting_portal"; +import { registry } from "@web/core/registry"; +const servicesToRemove = ["menu"]; + +const servicesRegistry = registry.category("services"); + +/** + * Remove services unsued in subcontracting portal feature. + * + * This function is used before starting the webclient + * to remove the services that we don't want in the registry. + * In this case, the home_menu service is removed via the assets + * but the services in web_studio depends on this service and are not removed. + * Since this module has not web_studio module in this dependencies, this function will remove + * the services that we don't want instead of create a new module just to remove the services in assets. + */ +export function removeServices() { + for (const service of servicesToRemove) { + if (servicesRegistry.contains(service)) { + servicesRegistry.remove(service); + } + } +} + +removeServices(); startWebClient(SubcontractingPortalWebClient);