From 10b460b53f86c241b60d6154659babf177e349d5 Mon Sep 17 00:00:00 2001 From: Jurgis Pralgauskis Date: Tue, 21 Apr 2026 14:26:38 +0300 Subject: [PATCH] [IMP] addons info in models graph to see better picture: where the model is extended --- src/odoo_analyse/odoo.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/odoo_analyse/odoo.py b/src/odoo_analyse/odoo.py index 83afc1b..5aaa89e 100644 --- a/src/odoo_analyse/odoo.py +++ b/src/odoo_analyse/odoo.py @@ -639,8 +639,34 @@ def color_edge(node_a, node_b): return loop_color return None + # extend model-names with addons-comma-seprated-list in brackets + # by substituting key and values with result of _get_model_inheritances + name_mapping = {} + for model_name in graph: + # find the + addons = [ + addon_name + for addon_name, addon in self.items() + if model_name in addon.models + ] + # TODO nice-to-have: MRO via: _build_module_graph + _resolve_dependencies + if addons: + extended_name = (f"{model_name} \\n\\n*addons*\\n" + f" {',\\n'.join(addons)}") + name_mapping[model_name] = extended_name + + # Substitute keys and values in the graph + extended_graph = {} + for model_name, deps in graph.items(): + extended_name = name_mapping.get(model_name, model_name) + extended_deps = {name_mapping.get(x, x) for x in deps} + extended_graph[extended_name] = extended_deps + + # Update graph reference + graph = extended_graph + self._show_graph( - graph, check_node, color_node, color_edge, filename=filename or "model.gv" + graph, check_node, color_node, color_edge, filename=filename or "model.gv.dot" ) def show_view_graph(self, views="*", inherit=True, calls=True, filename=None):