diff --git a/addons/web/__manifest__.py b/addons/web/__manifest__.py
index adbc8e7d84b..0d990999077 100644
--- a/addons/web/__manifest__.py
+++ b/addons/web/__manifest__.py
@@ -495,6 +495,7 @@ This module provides the core of the Odoo Web Client.
'base/static/src/css/description.css',
'web/static/src/libs/fontawesome/css/font-awesome.css',
+ 'web/static/src/legacy/scss/fontawesome_overridden.scss',
'web/static/lib/odoo_ui_icons/*',
'web/static/fonts/fonts.scss',
@@ -504,11 +505,6 @@ This module provides the core of the Odoo Web Client.
'web/static/src/webclient/actions/reports/layout_assets/layout_boxed.scss',
'web/static/src/webclient/actions/reports/layout_assets/layout_clean.scss',
'web/static/asset_styles_company_report.scss',
-
- 'web/static/src/legacy/js/services/session.js',
- 'web/static/src/legacy/js/public/public_root.js',
- 'web/static/src/legacy/js/public/public_root_instance.js',
- 'web/static/src/legacy/js/public/public_widget.js',
],
'web.report_assets_pdf': [
'web/static/src/webclient/actions/reports/reset.min.css',
@@ -587,6 +583,11 @@ This module provides the core of the Odoo Web Client.
# first called in web.
'web/static/tests/legacy/helpers/test_utils_file.js'
],
+ 'web.__assets_tests_call__': [
+ 'web/static/tests/ignore_missing_deps_start.js',
+ ('include', 'web.assets_tests'),
+ 'web/static/tests/ignore_missing_deps_stop.js',
+ ],
# remove this bundle alongside the owl2 compatibility layer
'web.tests_assets_common': [
('include', 'web.assets_common'),
diff --git a/addons/web/static/src/boot.js b/addons/web/static/src/boot.js
index 707c0ec0a41..55c2d96a098 100644
--- a/addons/web/static/src/boot.js
+++ b/addons/web/static/src/boot.js
@@ -75,11 +75,10 @@
return dep.to;
});
},
- getWaitedJobs: function () {
- return new Set(jobs.map((job) => job.name));
- },
getMissingJobs() {
- const waited = this.getWaitedJobs();
+ const waited = new Set(
+ jobs.filter((job) => !job.ignoreMissingDeps).map((job) => job.name)
+ );
const missing = new Set();
for (const job of waited) {
for (const dep of this.getDependencies(job)) {
@@ -228,6 +227,7 @@
deps: deps,
resolve: promiseResolve,
promise: promise,
+ ignoreMissingDeps: globalThis.__odooIgnoreMissingDependencies,
});
deps.forEach(function (dep) {
@@ -248,6 +248,9 @@
var jobdep;
for (var k = 0; k < jobs.length; k++) {
+ if (jobs[k].ignoreMissingDeps) {
+ continue;
+ }
debugJobs[jobs[k].name] = job = {
dependencies: jobs[k].deps,
dependents: odoo.__DEBUG__.getDependents(jobs[k].name),
@@ -345,12 +348,7 @@
cycle,
};
odoo.__DEBUG__.jsModules = moduleInfo;
- // The assets_tests bundle contains a lot of module whose dependencies are in other bundles
- // that may or may not be loaded. This global is used to silence module loading errors when
- // this bundle is present
- if (!window.__odooIgnoreModuleErrors) {
- displayModuleErrors(moduleInfo);
- }
+ displayModuleErrors(moduleInfo);
didLogInfoResolve(true);
};
@@ -454,7 +452,7 @@
}
const container = document.createElement("div");
container.className =
- "position-fixed w-100 h-100 d-flex align-items-center flex-column bg-white overflow-auto";
+ "position-fixed w-100 h-100 d-flex align-items-center flex-column bg-white overflow-auto modal";
container.style.zIndex = "10000";
const alert = document.createElement("div");
alert.className = "alert alert-danger o_error_detail fw-bold m-auto";
diff --git a/addons/web/static/src/views/graph/colors.js b/addons/web/static/src/core/colors/colors.js
similarity index 91%
rename from addons/web/static/src/views/graph/colors.js
rename to addons/web/static/src/core/colors/colors.js
index c0313a30769..6379abba3b6 100644
--- a/addons/web/static/src/views/graph/colors.js
+++ b/addons/web/static/src/core/colors/colors.js
@@ -1,5 +1,9 @@
/** @odoo-module **/
+/**
+ * Lists of colors that contrast well with each other to be used in various
+ * visualizations (eg. graphs/charts), both in bright and dark themes.
+ */
const COLORS_BRIGHT = [
"#1f77b4",
"#ff7f0e",
diff --git a/addons/web/static/src/views/fields/journal_dashboard_graph/journal_dashboard_graph_field.js b/addons/web/static/src/views/fields/journal_dashboard_graph/journal_dashboard_graph_field.js
index ab62cec5bef..d14199b06fc 100644
--- a/addons/web/static/src/views/fields/journal_dashboard_graph/journal_dashboard_graph_field.js
+++ b/addons/web/static/src/views/fields/journal_dashboard_graph/journal_dashboard_graph_field.js
@@ -2,7 +2,7 @@
import { loadJS } from "@web/core/assets";
import { registry } from "@web/core/registry";
-import { getColor, hexToRGBA } from "@web/views/graph/colors";
+import { getColor, hexToRGBA } from "@web/core/colors/colors";
import { standardFieldProps } from "../standard_field_props";
import { useService } from "@web/core/utils/hooks";
diff --git a/addons/web/static/src/views/graph/graph_renderer.js b/addons/web/static/src/views/graph/graph_renderer.js
index 35a99db5390..b366fe2aa10 100644
--- a/addons/web/static/src/views/graph/graph_renderer.js
+++ b/addons/web/static/src/views/graph/graph_renderer.js
@@ -1,7 +1,7 @@
/** @odoo-module **/
import { _lt } from "@web/core/l10n/translation";
-import { getBorderWhite, DEFAULT_BG, getColor, hexToRGBA } from "./colors";
+import { getBorderWhite, DEFAULT_BG, getColor, hexToRGBA } from "@web/core/colors/colors";
import { formatFloat } from "@web/views/fields/formatters";
import { SEP } from "./graph_model";
import { sortBy } from "@web/core/utils/arrays";
diff --git a/addons/web/static/tests/ignore_missing_deps_start.js b/addons/web/static/tests/ignore_missing_deps_start.js
new file mode 100644
index 00000000000..bed7c6ac278
--- /dev/null
+++ b/addons/web/static/tests/ignore_missing_deps_start.js
@@ -0,0 +1,4 @@
+// This module has for sole purpose to mark all odoo modules defined between it
+// and ignore_missing_deps_stop as ignored for missing dependency errors.
+// see the template conditional_assets_tests to understand how it's used.
+window.__odooIgnoreMissingDependencies = true;
diff --git a/addons/web/static/tests/ignore_missing_deps_stop.js b/addons/web/static/tests/ignore_missing_deps_stop.js
new file mode 100644
index 00000000000..e04f11428e0
--- /dev/null
+++ b/addons/web/static/tests/ignore_missing_deps_stop.js
@@ -0,0 +1 @@
+window.__odooIgnoreMissingDependencies = false;
diff --git a/addons/web/static/tests/views/graph_view_tests.js b/addons/web/static/tests/views/graph_view_tests.js
index acc55e423d8..e05604b1afe 100644
--- a/addons/web/static/tests/views/graph_view_tests.js
+++ b/addons/web/static/tests/views/graph_view_tests.js
@@ -26,7 +26,7 @@ import { makeView, setupViewRegistries } from "@web/../tests/views/helpers";
import { createWebClient, doAction } from "@web/../tests/webclient/helpers";
import { browser } from "@web/core/browser/browser";
import { registry } from "@web/core/registry";
-import { getBorderWhite, DEFAULT_BG, getColors, hexToRGBA } from "@web/views/graph/colors";
+import { getBorderWhite, DEFAULT_BG, getColors, hexToRGBA } from "@web/core/colors/colors";
import { GraphArchParser } from "@web/views/graph/graph_arch_parser";
import { patchWithCleanup } from "../helpers/utils";
import { fakeCookieService } from "@web/../tests/helpers/mock_services";
diff --git a/addons/web/views/report_templates.xml b/addons/web/views/report_templates.xml
index 8c70b2c95c0..caa8e7e87f3 100644
--- a/addons/web/views/report_templates.xml
+++ b/addons/web/views/report_templates.xml
@@ -15,19 +15,6 @@
-
-
-
-
-
@@ -51,15 +38,7 @@
-
-