From 72cf8cd241c6536eb343ddc32453332b864263f5 Mon Sep 17 00:00:00 2001 From: Vincent Van Rossem Date: Wed, 20 Aug 2025 12:06:55 +0200 Subject: [PATCH 01/64] [IMP] base_view_inheritance_extension: drop unused dependency Drops ``astor``: unused external dependency --- base_view_inheritance_extension/README.rst | 20 +++++++++---------- .../__manifest__.py | 1 - requirements.txt | 1 - 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/base_view_inheritance_extension/README.rst b/base_view_inheritance_extension/README.rst index 50a80b7c783..53ca0437ed1 100644 --- a/base_view_inheritance_extension/README.rst +++ b/base_view_inheritance_extension/README.rst @@ -75,7 +75,7 @@ conditional changes** Known issues / Roadmap ====================== -- Support an ``eval`` attribute for our new node types. +- Support an ``eval`` attribute for our new node types. Bug Tracker =========== @@ -98,19 +98,19 @@ Authors Contributors ------------ -- Holger Brunn -- Ronald Portier -- `Tecnativa `__: +- Holger Brunn +- Ronald Portier +- `Tecnativa `__: - - Sergio Teruel - - Carlos Dauden + - Sergio Teruel + - Carlos Dauden -- `Trobz `__: +- `Trobz `__: - - Nhan Tran + - Nhan Tran -- Iván Todorovich -- Frederic Grall +- Iván Todorovich +- Frederic Grall Maintainers ----------- diff --git a/base_view_inheritance_extension/__manifest__.py b/base_view_inheritance_extension/__manifest__.py index 7c6e621f49b..c7e78d74ccf 100644 --- a/base_view_inheritance_extension/__manifest__.py +++ b/base_view_inheritance_extension/__manifest__.py @@ -11,6 +11,5 @@ "summary": "Adds more operators for view inheritance", "website": "https://github.com/OCA/server-tools", "depends": ["base"], - "external_dependencies": {"python": ["astor"]}, "demo": ["demo/ir_ui_view.xml"], } diff --git a/requirements.txt b/requirements.txt index 8c60256be39..4b20cc442d1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ # generated from manifests external_dependencies -astor cryptography dataclasses odoo_test_helper From 39077df380eef28be511b5e43e76f5f93accd98a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 11 Dec 2025 08:27:01 +0000 Subject: [PATCH 02/64] [BOT] post-merge updates --- README.md | 2 +- base_view_inheritance_extension/README.rst | 28 +++++++++-------- .../__manifest__.py | 2 +- .../static/description/index.html | 30 +++++++++++-------- 4 files changed, 36 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index ada1f86ff94..6931a438c89 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ addon | version | maintainers | summary [base_technical_user](base_technical_user/) | 18.0.1.0.1 | | Add a technical user parameter on the company [base_temporary_action](base_temporary_action/) | 18.0.1.0.0 | | This addon allows to create temporary actions [base_time_window](base_time_window/) | 18.0.1.1.0 | | Base model to handle time windows -[base_view_inheritance_extension](base_view_inheritance_extension/) | 18.0.1.0.1 | | Adds more operators for view inheritance +[base_view_inheritance_extension](base_view_inheritance_extension/) | 18.0.1.0.2 | | Adds more operators for view inheritance [bus_alt_connection](bus_alt_connection/) | 18.0.1.0.0 | | Needed when using PgBouncer as a connection pooler [database_cleanup](database_cleanup/) | 18.0.1.0.2 | | Database cleanup [database_size](database_size/) | 18.0.1.0.2 | | Database Size diff --git a/base_view_inheritance_extension/README.rst b/base_view_inheritance_extension/README.rst index 53ca0437ed1..d8906b5d2b0 100644 --- a/base_view_inheritance_extension/README.rst +++ b/base_view_inheritance_extension/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ========================= Extended view inheritance ========================= @@ -7,13 +11,13 @@ Extended view inheritance !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:3164c7b67a9aa830f28bff20df0f54007a2cb55ec7e67009ccae8a1a2925a4e6 + !! source digest: sha256:cb2fb0b7f832559d24b4af1f66ac9d92258ed4cb2a2f32b5b1afaa3437f7b9eb !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png :target: https://odoo-community.org/page/development-status :alt: Mature -.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github @@ -75,7 +79,7 @@ conditional changes** Known issues / Roadmap ====================== -- Support an ``eval`` attribute for our new node types. +- Support an ``eval`` attribute for our new node types. Bug Tracker =========== @@ -98,19 +102,19 @@ Authors Contributors ------------ -- Holger Brunn -- Ronald Portier -- `Tecnativa `__: +- Holger Brunn +- Ronald Portier +- `Tecnativa `__: - - Sergio Teruel - - Carlos Dauden + - Sergio Teruel + - Carlos Dauden -- `Trobz `__: +- `Trobz `__: - - Nhan Tran + - Nhan Tran -- Iván Todorovich -- Frederic Grall +- Iván Todorovich +- Frederic Grall Maintainers ----------- diff --git a/base_view_inheritance_extension/__manifest__.py b/base_view_inheritance_extension/__manifest__.py index c7e78d74ccf..7851b86825b 100644 --- a/base_view_inheritance_extension/__manifest__.py +++ b/base_view_inheritance_extension/__manifest__.py @@ -3,7 +3,7 @@ # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). { "name": "Extended view inheritance", - "version": "18.0.1.0.1", + "version": "18.0.1.0.2", "development_status": "Mature", "author": "Therp BV,Odoo Community Association (OCA)", "license": "LGPL-3", diff --git a/base_view_inheritance_extension/static/description/index.html b/base_view_inheritance_extension/static/description/index.html index 458e90b699b..4f59755ca4b 100644 --- a/base_view_inheritance_extension/static/description/index.html +++ b/base_view_inheritance_extension/static/description/index.html @@ -3,7 +3,7 @@ -Extended view inheritance +README.rst -
-

Extended view inheritance

+
+ + +Odoo Community Association + +
+

Extended view inheritance

-

Mature License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

Mature License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

This module was written to make it simple to add custom operators for view inheritance.

Table of contents

@@ -387,7 +392,7 @@

Extended view inheritance

-

Usage

+

Usage

Change a python dictionary (context for example)

 <field position="attributes">
@@ -416,13 +421,13 @@ 

Usage

-

Known issues / Roadmap

+

Known issues / Roadmap

  • Support an eval attribute for our new node types.
-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -430,15 +435,15 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • Therp BV
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -469,5 +474,6 @@

Maintainers

+
From d9bef8676a09b7d392fbe4e07a2e868eab80b976 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Sun, 7 Jul 2019 18:03:38 +0200 Subject: [PATCH 03/64] [ADD] new module module_analysis fixup! [ADD] new module module_analysis fixup! fixup! [ADD] new module module_analysis fixup! fixup! fixup! [ADD] new module module_analysis fixup! fixup! fixup! fixup! [ADD] new module module_analysis IMP exception message fixup! fixup! fixup! fixup! fixup! [ADD] new module module_analysis [REF] remove use of cloc. use pygount librairy instead fixup! [REF] remove use of cloc. use pygount librairy instead fixup! fixup! [REF] remove use of cloc. use pygount librairy instead Apply suggestions from code review Co-Authored-By: David Beal Update module_analysis/views/menu.xml Co-Authored-By: David Beal Update module_analysis/tests/test_module.py Co-Authored-By: David Beal Update module_analysis/readme/CONFIGURE.rst Co-Authored-By: David Beal [IMP] handle encoding [UPD] Update module_analysis.pot [UPD] README.rst [UPD] README.rst --- module_analysis/README.rst | 182 ++++++ module_analysis/__init__.py | 2 + module_analysis/__manifest__.py | 34 ++ module_analysis/data/ir_config_parameter.xml | 20 + module_analysis/data/ir_module_type.xml | 18 + module_analysis/data/ir_module_type_rule.xml | 42 ++ module_analysis/i18n/module_analysis.pot | 213 +++++++ module_analysis/models/__init__.py | 5 + module_analysis/models/base_module_update.py | 18 + module_analysis/models/ir_module_author.py | 39 ++ module_analysis/models/ir_module_module.py | 186 +++++++ module_analysis/models/ir_module_type.py | 30 + module_analysis/models/ir_module_type_rule.py | 30 + module_analysis/post_init_hook.py | 13 + module_analysis/readme/CONFIGURE.rst | 61 ++ module_analysis/readme/CONTRIBUTORS.rst | 1 + module_analysis/readme/DESCRIPTION.rst | 26 + module_analysis/readme/INSTALL.rst | 3 + module_analysis/readme/USAGE.rst | 8 + module_analysis/security/ir.model.access.csv | 4 + .../description/add_module_type_rules.png | Bin 0 -> 34383 bytes .../static/description/analysis_pie.png | Bin 0 -> 16575 bytes .../static/description/analysis_pivot.png | Bin 0 -> 34720 bytes .../static/description/base_module_update.png | Bin 0 -> 9303 bytes .../static/description/config_parameters.png | Bin 0 -> 7090 bytes .../description/default_module_type_rules.png | Bin 0 -> 30129 bytes module_analysis/static/description/icon.png | Bin 0 -> 9455 bytes module_analysis/static/description/index.html | 523 ++++++++++++++++++ .../installed_modules_by_types.png | Bin 0 -> 14472 bytes .../static/description/module_authors.png | Bin 0 -> 25281 bytes .../static/description/module_form.png | Bin 0 -> 40318 bytes .../static/description/module_types.png | Bin 0 -> 15552 bytes module_analysis/tests/__init__.py | 1 + module_analysis/tests/test_module.py | 33 ++ module_analysis/views/menu.xml | 24 + .../views/view_base_module_update.xml | 20 + .../views/view_ir_module_author.xml | 52 ++ .../views/view_ir_module_module.xml | 67 +++ module_analysis/views/view_ir_module_type.xml | 50 ++ .../views/view_ir_module_type_rule.xml | 34 ++ 40 files changed, 1739 insertions(+) create mode 100644 module_analysis/README.rst create mode 100644 module_analysis/__init__.py create mode 100644 module_analysis/__manifest__.py create mode 100644 module_analysis/data/ir_config_parameter.xml create mode 100644 module_analysis/data/ir_module_type.xml create mode 100644 module_analysis/data/ir_module_type_rule.xml create mode 100644 module_analysis/i18n/module_analysis.pot create mode 100644 module_analysis/models/__init__.py create mode 100644 module_analysis/models/base_module_update.py create mode 100644 module_analysis/models/ir_module_author.py create mode 100644 module_analysis/models/ir_module_module.py create mode 100644 module_analysis/models/ir_module_type.py create mode 100644 module_analysis/models/ir_module_type_rule.py create mode 100644 module_analysis/post_init_hook.py create mode 100644 module_analysis/readme/CONFIGURE.rst create mode 100644 module_analysis/readme/CONTRIBUTORS.rst create mode 100644 module_analysis/readme/DESCRIPTION.rst create mode 100644 module_analysis/readme/INSTALL.rst create mode 100644 module_analysis/readme/USAGE.rst create mode 100644 module_analysis/security/ir.model.access.csv create mode 100644 module_analysis/static/description/add_module_type_rules.png create mode 100644 module_analysis/static/description/analysis_pie.png create mode 100644 module_analysis/static/description/analysis_pivot.png create mode 100644 module_analysis/static/description/base_module_update.png create mode 100644 module_analysis/static/description/config_parameters.png create mode 100644 module_analysis/static/description/default_module_type_rules.png create mode 100644 module_analysis/static/description/icon.png create mode 100644 module_analysis/static/description/index.html create mode 100644 module_analysis/static/description/installed_modules_by_types.png create mode 100644 module_analysis/static/description/module_authors.png create mode 100644 module_analysis/static/description/module_form.png create mode 100644 module_analysis/static/description/module_types.png create mode 100644 module_analysis/tests/__init__.py create mode 100644 module_analysis/tests/test_module.py create mode 100644 module_analysis/views/menu.xml create mode 100644 module_analysis/views/view_base_module_update.xml create mode 100644 module_analysis/views/view_ir_module_author.xml create mode 100644 module_analysis/views/view_ir_module_module.xml create mode 100644 module_analysis/views/view_ir_module_type.xml create mode 100644 module_analysis/views/view_ir_module_type_rule.xml diff --git a/module_analysis/README.rst b/module_analysis/README.rst new file mode 100644 index 00000000000..f6cf26478ec --- /dev/null +++ b/module_analysis/README.rst @@ -0,0 +1,182 @@ +=============== +Module Analysis +=============== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/12.0/module_analysis + :alt: OCA/server-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-module_analysis + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/149/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows you to know 'how much code' is running on your Odoo +instance, group by 'Type' (Odoo Core, OCA, other...) + +This module can be usefull in the following cases : + +* To analyse the size of your technical debt, regarding your Custom modules +* To know the ratio between Odoo / OCA and Custom modules +* To evaluate the amount to pay to odoo to upgrade your custom code, or the + induced workload + +.. image:: https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/installed_modules_by_types.png + +For that purpose, it adds new concepts + +* ``ir.module.author``, based on the value ``author`` present in the manifest + file. + +.. image:: https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/module_authors.png + +* ``ir.module.type``, populated by default with Odoo and OCA values. + +.. image:: https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/module_types.png + +Each installed modules have extra data in the 'Technical Data' tab : + +.. image:: https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/module_form.png + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +To use this module, you have to install the ``pygount`` python librairy. + +``pip install pygount`` + +Configuration +============= + +* Go to Apps / Module Analysis / Modules Types Rules + +The Module types Rules are usefull to get the Type of a module, based on +it information. + +This module comes with default rules. + + .. image:: https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/default_module_type_rules.png + + +You can add your custom rules to identify the modules your team have +developped for exemple, + + .. image:: https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/add_module_type_rules.png + + +to update the data, you have to : + +* Go to 'Apps' / 'Update Apps List' + +* Check the box 'Analyse Installed modules' + + .. image:: https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/base_module_update.png + +This will update analysis of your installed modules. + + +Adding Extra data +~~~~~~~~~~~~~~~~~ + +If you want to analyse other data, (for exemple, having the number of HTML +files), create a custom modules and overload the module model : + +.. code-block:: python + + from odoo import api, fields, models + + class IrModuleModule(models.Model): + _inherit = 'ir.module.module' + + xml_documentation_qty = fields.Integer( + string='Quantity of Comments in XML Files') + + @api.model + def _get_analyse_settings(self): + res = super()._get_analyse_settings() + if not '.html' in res: + res['.html'] = {} + res['.html']['documentation'] 'xml_documentation_qty' + return res + +Exclude files and directories +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Two parameters are availaible in 'Settings' / 'Technical' / 'Parameters' +'System Parameters' : + + .. image:: https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/config_parameters.png + +The list of folders and filename will be exclude from the analysis. +You can change the default settings. + +Usage +===== + +* Go to 'Apps' / 'Module Analysis' / 'Installed module by Types' + +Open the stats to analyse the detail of the code installed + + .. image:: https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/analysis_pivot.png + + .. image:: https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/analysis_pie.png + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* GRAP + +Contributors +~~~~~~~~~~~~ + +* Sylvain LE GAL (https://twitter.com/legalsylvain) + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/server-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/module_analysis/__init__.py b/module_analysis/__init__.py new file mode 100644 index 00000000000..9f5fd1d3ba4 --- /dev/null +++ b/module_analysis/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . post_init_hook import analyse_installed_modules diff --git a/module_analysis/__manifest__.py b/module_analysis/__manifest__.py new file mode 100644 index 00000000000..fbe44c2e661 --- /dev/null +++ b/module_analysis/__manifest__.py @@ -0,0 +1,34 @@ +# Copyright (C) 2019-Today: GRAP () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + 'name': "Module Analysis", + 'summary': "Add analysis tools regarding installed modules" + " to know which installed modules comes from Odoo Core, OCA, or are" + " custom modules", + 'author': 'GRAP, Odoo Community Association (OCA)', + 'website': "https://github.com/OCA/server-tools/", + 'version': '12.0.1.0.0', + 'license': 'AGPL-3', + 'depends': [ + 'base', + ], + 'data': [ + 'security/ir.model.access.csv', + 'views/menu.xml', + 'views/view_base_module_update.xml', + 'views/view_ir_module_author.xml', + 'views/view_ir_module_type.xml', + 'views/view_ir_module_type_rule.xml', + 'views/view_ir_module_module.xml', + 'data/ir_config_parameter.xml', + 'data/ir_module_type.xml', + 'data/ir_module_type_rule.xml', + ], + 'external_dependencies': { + 'python': ['pygount'], + }, + 'post_init_hook': 'analyse_installed_modules', + 'installable': True, +} diff --git a/module_analysis/data/ir_config_parameter.xml b/module_analysis/data/ir_config_parameter.xml new file mode 100644 index 00000000000..337ff4ab491 --- /dev/null +++ b/module_analysis/data/ir_config_parameter.xml @@ -0,0 +1,20 @@ + + + + + + + module_analysis.exclude_directories + lib,demo,test,tests,doc,description + + + + module_analysis.exclude_files + __openerp__.py,__manifest__.py + + + diff --git a/module_analysis/data/ir_module_type.xml b/module_analysis/data/ir_module_type.xml new file mode 100644 index 00000000000..3e5e7a40d19 --- /dev/null +++ b/module_analysis/data/ir_module_type.xml @@ -0,0 +1,18 @@ + + + + + + + Odoo Core + + + + OCA + + + diff --git a/module_analysis/data/ir_module_type_rule.xml b/module_analysis/data/ir_module_type_rule.xml new file mode 100644 index 00000000000..7e95e8e7904 --- /dev/null +++ b/module_analysis/data/ir_module_type_rule.xml @@ -0,0 +1,42 @@ + + + + + + + + 1 + [('author_ids', 'ilike', 'Odoo S.A')] + + + + + 2 + [('author_ids', 'ilike', 'OpenERP SA')] + + + + + 3 + [('author_ids', '=', 'Odoo SA')] + + + + + 4 + [('author_ids', '=', 'Odoo')] + + + + + + 100 + [('author_ids', '=', 'Odoo Community Association (OCA)')] + + + + diff --git a/module_analysis/i18n/module_analysis.pot b/module_analysis/i18n/module_analysis.pot new file mode 100644 index 00000000000..482ec06e47c --- /dev/null +++ b/module_analysis/i18n/module_analysis.pot @@ -0,0 +1,213 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * module_analysis +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_base_module_update__analyse_installed_modules +msgid "Analyse Installed Modules" +msgstr "" + +#. module: module_analysis +#: model:ir.ui.menu,name:module_analysis.menu_module_analysis +msgid "Analysis" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_module__author_ids +msgid "Authors" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_module__css_code_qty +msgid "CSS Code Quantity" +msgstr "" + +#. module: module_analysis +#: model_terms:ir.ui.view,arch_db:module_analysis.view_ir_module_module_form +msgid "Code Size" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_author__create_uid +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type__create_uid +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type_rule__create_uid +msgid "Created by" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_author__create_date +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type__create_date +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type_rule__create_date +msgid "Created on" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_author__display_name +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type__display_name +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type_rule__display_name +msgid "Display Name" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_author__id +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type__id +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type_rule__id +msgid "ID" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type__installed_module_ids +msgid "Installed Modules" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_author__installed_module_qty +msgid "Installed Modules Quantity" +msgstr "" + +#. module: module_analysis +#: model:ir.actions.act_window,name:module_analysis.action_ir_module_module_by_type +#: model:ir.ui.menu,name:module_analysis.menu_module_by_type +msgid "Installed Modules by Types" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_module__js_code_qty +msgid "JS Code Quantity" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_author____last_update +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type____last_update +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type_rule____last_update +msgid "Last Modified on" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_author__write_uid +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type__write_uid +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type_rule__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_author__write_date +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type__write_date +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type_rule__write_date +msgid "Last Updated on" +msgstr "" + +#. module: module_analysis +#: model:ir.model,name:module_analysis.model_ir_module_module +msgid "Module" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type_rule__module_domain +msgid "Module Domain" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_module__module_type_id +msgid "Module Type" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type_rule__module_type_id +msgid "Module type" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_author__installed_module_ids +msgid "Modules" +msgstr "" + +#. module: module_analysis +#: model:ir.actions.act_window,name:module_analysis.action_ir_module_author +#: model:ir.model,name:module_analysis.model_ir_module_author +#: model:ir.ui.menu,name:module_analysis.menu_module_authors +msgid "Modules Authors" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type__installed_module_qty +msgid "Modules Quantity" +msgstr "" + +#. module: module_analysis +#: model:ir.actions.act_window,name:module_analysis.action_ir_module_type +#: model:ir.model,name:module_analysis.model_ir_module_type +#: model:ir.ui.menu,name:module_analysis.menu_module_types +msgid "Modules Types" +msgstr "" + +#. module: module_analysis +#: model:ir.actions.act_window,name:module_analysis.action_ir_module_type_rule +#: model:ir.model,name:module_analysis.model_ir_module_type_rule +#: model:ir.ui.menu,name:module_analysis.menu_module_type_rules +msgid "Modules Types Rules" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_author__name +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type__name +msgid "Name" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_module__python_code_qty +msgid "Python Code Quantity" +msgstr "" + +#. module: module_analysis +#: model_terms:ir.ui.view,arch_db:module_analysis.view_ir_module_module_form +msgid "Refresh Code Analysis" +msgstr "" + +#. module: module_analysis +#: model:ir.ui.menu,name:module_analysis.menu_module_analysis_reporting +msgid "Reporting" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type__sequence +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_type_rule__sequence +msgid "Sequence" +msgstr "" + +#. module: module_analysis +#: model:ir.ui.menu,name:module_analysis.menu_module_analysis_settings +msgid "Settings" +msgstr "" + +#. module: module_analysis +#: sql_constraint:ir.module.author:0 +msgid "The name of the modules author should be unique per database!" +msgstr "" + +#. module: module_analysis +#: model_terms:ir.ui.view,arch_db:module_analysis.view_ir_module_module_form +msgid "Type and Authors" +msgstr "" + +#. module: module_analysis +#: model:ir.model,name:module_analysis.model_base_module_update +msgid "Update Module" +msgstr "" + +#. module: module_analysis +#: model:ir.model.fields,field_description:module_analysis.field_ir_module_module__xml_code_qty +msgid "XML Code Quantity" +msgstr "" + diff --git a/module_analysis/models/__init__.py b/module_analysis/models/__init__.py new file mode 100644 index 00000000000..d320c5b34b2 --- /dev/null +++ b/module_analysis/models/__init__.py @@ -0,0 +1,5 @@ +from . import base_module_update +from . import ir_module_author +from . import ir_module_module +from . import ir_module_type +from . import ir_module_type_rule diff --git a/module_analysis/models/base_module_update.py b/module_analysis/models/base_module_update.py new file mode 100644 index 00000000000..9a884de13b6 --- /dev/null +++ b/module_analysis/models/base_module_update.py @@ -0,0 +1,18 @@ +# Copyright (C) 2019-Today: GRAP () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models + + +class BaseModuleUpdate(models.TransientModel): + _inherit = 'base.module.update' + + analyse_installed_modules = fields.Boolean( + string='Analyse Installed Modules', default=True) + + @api.multi + def update_module(self): + return super(BaseModuleUpdate, self.with_context( + analyse_installed_modules=self.analyse_installed_modules) + ).update_module() diff --git a/module_analysis/models/ir_module_author.py b/module_analysis/models/ir_module_author.py new file mode 100644 index 00000000000..160d098ada5 --- /dev/null +++ b/module_analysis/models/ir_module_author.py @@ -0,0 +1,39 @@ +# Copyright (C) 2019-Today: GRAP () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models + + +class IrModuleAuthor(models.Model): + _name = 'ir.module.author' + _description = 'Modules Authors' + + name = fields.Char(string='Name', required=True) + + installed_module_ids = fields.Many2many( + string='Modules', comodel_name='ir.module.module', + relation='ir_module_module_author_rel') + + installed_module_qty = fields.Integer( + string="Installed Modules Quantity", + compute='_compute_installed_module_qty', store=True) + + _sql_constraints = [ + ('name_uniq', 'unique(name)', + 'The name of the modules author should be unique per database!'), + ] + + @api.multi + @api.depends('installed_module_ids') + def _compute_installed_module_qty(self): + for author in self: + author.installed_module_qty = len(author.installed_module_ids) + + @api.model + def _get_or_create(self, name): + authors = self.search([('name', '=', name)]) + if authors: + return authors[0] + else: + return self.create({'name': name}) diff --git a/module_analysis/models/ir_module_module.py b/module_analysis/models/ir_module_module.py new file mode 100644 index 00000000000..b59dc299b21 --- /dev/null +++ b/module_analysis/models/ir_module_module.py @@ -0,0 +1,186 @@ +# Copyright (C) 2019-Today: GRAP () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import os +import pygount +from pathlib import Path +import logging + +from odoo import api, fields, models +from odoo.tools.safe_eval import safe_eval +from odoo.modules.module import get_module_path + +_logger = logging.getLogger(__name__) + + +class IrModuleModule(models.Model): + _inherit = 'ir.module.module' + + author_ids = fields.Many2many( + string='Authors', comodel_name='ir.module.author', readonly=True, + relation='ir_module_module_author_rel') + + module_type_id = fields.Many2one( + string='Module Type', comodel_name='ir.module.type', readonly=True) + + python_code_qty = fields.Integer( + string='Python Code Quantity', readonly=True) + + xml_code_qty = fields.Integer( + string='XML Code Quantity', readonly=True) + + js_code_qty = fields.Integer( + string='JS Code Quantity', readonly=True) + + css_code_qty = fields.Integer( + string='CSS Code Quantity', readonly=True) + + # Overloadable Section + @api.model + def _get_analyse_settings(self): + """Return a dictionnary of data analysed + Overload this function if you want to analyse other data + { + 'extension': { + 'data_to_analyse': 'field_name', + }, + }, [...] + extension: extension of the file, with the '.' + data_to_analyse : possible value : code, documentation, empty, string + field_name: Odoo field name to store the analysis + """ + return { + '.py': { + 'code': 'python_code_qty', + }, + '.xml': { + 'code': 'xml_code_qty', + }, + '.js': { + 'code': 'js_code_qty', + }, + '.css': { + 'code': 'css_code_qty', + }, + } + + @api.model + def _get_clean_analyse_values(self): + """List of fields to unset when a module is uninstalled""" + return { + 'author_ids': [6, 0, []], + 'module_type_id': False, + 'python_code_qty': False, + 'xml_code_qty': 0, + 'js_code_qty': 0, + 'css_code_qty': 0, + } + + @api.model + def _get_module_encoding(self, file_ext): + return 'utf-8' + + # Overload Section + @api.model + def update_list(self): + res = super().update_list() + if self.env.context.get('analyse_installed_modules', False): + self.search([('state', '=', 'installed')]).button_analyse_code() + return res + + @api.multi + def write(self, vals): + res = super().write(vals) + if vals.get('state', False) == 'installed': + self.button_analyse_code() + elif vals.get('state', False) == 'uninstalled'\ + and 'module_analysis' not in [x.name for x in self]: + self.write(self._get_clean_analyse_values()) + return res + + # Public Section + @api.multi + def button_analyse_code(self): + IrModuleAuthor = self.env['ir.module.author'] + IrModuleTypeRule = self.env['ir.module.type.rule'] + rules = IrModuleTypeRule.search([]) + + cfg = self.env['ir.config_parameter'] + val = cfg.get_param('module_analysis.exclude_directories', '') + exclude_directories = [x.strip() for x in val.split(',') if x.strip()] + val = cfg.get_param('module_analysis.exclude_files', '') + exclude_files = [x.strip() for x in val.split(',') if x.strip()] + + for module in self: + _logger.info("Analysing Code for module %s ..." % (module.name)) + + # Update Authors, based on manifest key + authors = [] + if module.author and module.author[0] == '[': + author_txt_list = safe_eval(module.author) + else: + author_txt_list = module.author.split(',') + + author_txt_list = [x.strip() for x in author_txt_list] + author_txt_list = [x for x in author_txt_list if x] + for author_txt in author_txt_list: + authors.append(IrModuleAuthor._get_or_create(author_txt)) + + author_ids = [x.id for x in authors] + module.author_ids = author_ids + + # Update Module Type, based on rules + module_type_id = rules._get_module_type_id_from_module(module) + module.module_type_id = module_type_id + + # Get Path of module folder and parse the code + module_path = get_module_path(module.name) + + # Get Files + analysed_datas = self._get_analyse_data_dict() + file_extensions = analysed_datas.keys() + file_list = self._get_files_to_analyse( + module_path, file_extensions, exclude_directories, + exclude_files) + + for file_path, file_ext in file_list: + file_res = pygount.source_analysis( + file_path, '', + encoding=self._get_module_encoding(file_ext)) + for k, v in analysed_datas.get(file_ext).items(): + v['value'] += getattr(file_res, k) + + # Update the module with the datas + values = {} + for file_ext, analyses in analysed_datas.items(): + for k, v in analyses.items(): + values[v['field']] = v['value'] + module.write(values) + + # Custom Section + @api.model + def _get_files_to_analyse( + self, path, file_extensions, exclude_directories, exclude_files): + res = [] + for root, dirs, files in os.walk(path, followlinks=True): + if set(Path(root).parts) & set(exclude_directories): + continue + for name in files: + if name in exclude_files: + continue + filename, file_extension = os.path.splitext(name) + if file_extension in file_extensions: + res.append((os.path.join(root, name), file_extension)) + return res + + @api.model + def _get_analyse_data_dict(self): + res_dict = self._get_analyse_settings().copy() + for file_ext, analyse_dict in res_dict.items(): + for analyse_type, v in analyse_dict.items(): + analyse_dict[analyse_type] = { + 'field': v, + 'value': 0 + } + return res_dict diff --git a/module_analysis/models/ir_module_type.py b/module_analysis/models/ir_module_type.py new file mode 100644 index 00000000000..0a59a3d1b40 --- /dev/null +++ b/module_analysis/models/ir_module_type.py @@ -0,0 +1,30 @@ +# Copyright (C) 2019-Today: GRAP () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models + + +class IrModuleType(models.Model): + _name = 'ir.module.type' + _description = 'Modules Types' + _order = 'sequence' + + name = fields.Char(string='Name', required=True) + + sequence = fields.Integer(string='Sequence') + + installed_module_ids = fields.One2many( + string='Installed Modules', comodel_name='ir.module.module', + inverse_name='module_type_id') + + installed_module_qty = fields.Integer( + string='Modules Quantity', compute='_compute_installed_module_qty', + store=True) + + @api.multi + @api.depends('installed_module_ids.module_type_id') + def _compute_installed_module_qty(self): + for module_type in self: + module_type.installed_module_qty = len( + module_type.installed_module_ids) diff --git a/module_analysis/models/ir_module_type_rule.py b/module_analysis/models/ir_module_type_rule.py new file mode 100644 index 00000000000..d74a341cb70 --- /dev/null +++ b/module_analysis/models/ir_module_type_rule.py @@ -0,0 +1,30 @@ +# Copyright (C) 2019-Today: GRAP () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models +from odoo.tools.safe_eval import safe_eval + + +class IrModuleType(models.Model): + _name = 'ir.module.type.rule' + _description = 'Modules Types Rules' + _order = 'sequence' + + sequence = fields.Integer(string='Sequence') + + module_domain = fields.Char( + string='Module Domain', required=True, default='[]') + + module_type_id = fields.Many2one( + string='Module type', comodel_name='ir.module.type', required=True) + + @api.multi + def _get_module_type_id_from_module(self, module): + IrModuleModule = self.env['ir.module.module'] + for rule in self: + domain = safe_eval(rule.module_domain) + domain.append(('id', '=', module.id)) + if IrModuleModule.search(domain): + return rule.module_type_id.id + return False diff --git a/module_analysis/post_init_hook.py b/module_analysis/post_init_hook.py new file mode 100644 index 00000000000..5f9a882e8cb --- /dev/null +++ b/module_analysis/post_init_hook.py @@ -0,0 +1,13 @@ +# Copyright (C) 2019-Today: GRAP () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, SUPERUSER_ID + + +def analyse_installed_modules(cr, registry): + with api.Environment.manage(): + env = api.Environment(cr, SUPERUSER_ID, {}) + installed_modules = env['ir.module.module'].search( + [('state', '=', 'installed')]) + installed_modules.button_analyse_code() diff --git a/module_analysis/readme/CONFIGURE.rst b/module_analysis/readme/CONFIGURE.rst new file mode 100644 index 00000000000..527b149d6c8 --- /dev/null +++ b/module_analysis/readme/CONFIGURE.rst @@ -0,0 +1,61 @@ +* Go to Apps / Module Analysis / Modules Types Rules + +The Module types Rules are usefull to get the Type of a module, based on +it information. + +This module comes with default rules. + + .. image:: ../static/description/default_module_type_rules.png + + +You can add your custom rules to identify the modules your team have +developped for exemple, + + .. image:: ../static/description/add_module_type_rules.png + + +to update the data, you have to : + +* Go to 'Apps' / 'Update Apps List' + +* Check the box 'Analyse Installed modules' + + .. image:: ../static/description/base_module_update.png + +This will update analysis of your installed modules. + + +Adding Extra data +~~~~~~~~~~~~~~~~~ + +If you want to analyse other data, (for exemple, having the number of HTML +files), create a custom modules and overload the module model : + +.. code-block:: python + + from odoo import api, fields, models + + class IrModuleModule(models.Model): + _inherit = 'ir.module.module' + + xml_documentation_qty = fields.Integer( + string='Quantity of Comments in XML Files') + + @api.model + def _get_analyse_settings(self): + res = super()._get_analyse_settings() + if not '.html' in res: + res['.html'] = {} + res['.html']['documentation'] 'xml_documentation_qty' + return res + +Exclude files and directories +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Two parameters are availaible in 'Settings' / 'Technical' / 'Parameters' +'System Parameters' : + + .. image:: ../static/description/config_parameters.png + +The list of folders and filename will be exclude from the analysis. +You can change the default settings. diff --git a/module_analysis/readme/CONTRIBUTORS.rst b/module_analysis/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..ae6f43a86d8 --- /dev/null +++ b/module_analysis/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Sylvain LE GAL (https://twitter.com/legalsylvain) diff --git a/module_analysis/readme/DESCRIPTION.rst b/module_analysis/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..d25f10807e2 --- /dev/null +++ b/module_analysis/readme/DESCRIPTION.rst @@ -0,0 +1,26 @@ +This module allows you to know 'how much code' is running on your Odoo +instance, group by 'Type' (Odoo Core, OCA, other...) + +This module can be usefull in the following cases : + +* To analyse the size of your technical debt, regarding your Custom modules +* To know the ratio between Odoo / OCA and Custom modules +* To evaluate the amount to pay to odoo to upgrade your custom code, or the + induced workload + +.. image:: ../static/description/installed_modules_by_types.png + +For that purpose, it adds new concepts + +* ``ir.module.author``, based on the value ``author`` present in the manifest + file. + +.. image:: ../static/description/module_authors.png + +* ``ir.module.type``, populated by default with Odoo and OCA values. + +.. image:: ../static/description/module_types.png + +Each installed modules have extra data in the 'Technical Data' tab : + +.. image:: ../static/description/module_form.png diff --git a/module_analysis/readme/INSTALL.rst b/module_analysis/readme/INSTALL.rst new file mode 100644 index 00000000000..15ecd6f37fd --- /dev/null +++ b/module_analysis/readme/INSTALL.rst @@ -0,0 +1,3 @@ +To use this module, you have to install the ``pygount`` python librairy. + +``pip install pygount`` diff --git a/module_analysis/readme/USAGE.rst b/module_analysis/readme/USAGE.rst new file mode 100644 index 00000000000..2676bb76c0d --- /dev/null +++ b/module_analysis/readme/USAGE.rst @@ -0,0 +1,8 @@ +* Go to 'Apps' / 'Module Analysis' / 'Installed module by Types' + +Open the stats to analyse the detail of the code installed + + .. image:: ../static/description/analysis_pivot.png + + .. image:: ../static/description/analysis_pie.png + diff --git a/module_analysis/security/ir.model.access.csv b/module_analysis/security/ir.model.access.csv new file mode 100644 index 00000000000..af10dbde22f --- /dev/null +++ b/module_analysis/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_ir_module_author_manager,ir_module_author_manager,model_ir_module_author,base.group_system,1,1,1,1 +access_ir_module_type_manager,ir_module_type_manager,model_ir_module_type,base.group_system,1,1,1,1 +access_ir_module_type_rule_manager,ir_module_type_rule_manager,model_ir_module_type_rule,base.group_system,1,1,1,1 diff --git a/module_analysis/static/description/add_module_type_rules.png b/module_analysis/static/description/add_module_type_rules.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c97074e0b96f895bbd8d35c4d2dd029be2506e GIT binary patch literal 34383 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 I`Luoi2TOd9?f?J) literal 0 HcmV?d00001 diff --git a/module_analysis/static/description/analysis_pie.png b/module_analysis/static/description/analysis_pie.png new file mode 100644 index 0000000000000000000000000000000000000000..1ed7f867d7133706be6037cbaaeeec0ac0b4fda8 GIT binary patch literal 16575 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 QfJwll#pT5+L=61?56U5I%K!iX literal 0 HcmV?d00001 diff --git a/module_analysis/static/description/analysis_pivot.png b/module_analysis/static/description/analysis_pivot.png new file mode 100644 index 0000000000000000000000000000000000000000..376f008d24f54c8e045b42701d54f22712dd5dda GIT binary patch literal 34720 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 B|Te>FkRt<$A|H_VPAF?V}px4-N#4u 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 literal 0 HcmV?d00001 diff --git a/module_analysis/static/description/config_parameters.png b/module_analysis/static/description/config_parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..b11538a8afb11a5c601485da4a45dcb423e885cd GIT binary patch literal 7090 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%0DRxkOVp%qND&Q3iDE*Y(Qo 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/module_analysis/static/description/index.html b/module_analysis/static/description/index.html new file mode 100644 index 00000000000..11af0d46705 --- /dev/null +++ b/module_analysis/static/description/index.html @@ -0,0 +1,523 @@ + + + + + + +Module Analysis + + + +

+ + diff --git a/module_analysis/static/description/installed_modules_by_types.png b/module_analysis/static/description/installed_modules_by_types.png new file mode 100644 index 0000000000000000000000000000000000000000..7e08867c0f87d3c1bf2da09ab16317bf4098bcec GIT binary patch literal 14472 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

7CM4# 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 literal 0 HcmV?d00001 diff --git a/module_analysis/static/description/module_form.png b/module_analysis/static/description/module_form.png new file mode 100644 index 0000000000000000000000000000000000000000..12cef616d4c89fa175910fd10ebc1c1275addc96 GIT binary patch literal 40318 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 literal 0 HcmV?d00001 diff --git a/module_analysis/static/description/module_types.png b/module_analysis/static/description/module_types.png new file mode 100644 index 0000000000000000000000000000000000000000..7df84ee0d4452161d9ea3d0c19b1ae3ef4b52a15 GIT binary patch literal 15552 zcmd6OWmH^EyCoVRI0U!gA-DvW1a}A;0yJ*H-6aGK4#6!!LxQ_E?oM!R+@Wctk%s9c z@B7^!cV^a|e^YBgpLMEERh^RkJkPFuBGpypu%D7YMLB5zU|6n-D>$xHz;Pm|dLriAHp+G=*j-Vj@M$0Sfc*WO1%YEY!oH~d#;7`Ey#R--0 z*+hs@mxF217UQewUy4d9)9fpyj_E5$85Y+eUMoEO-zmYU?J%Pm ziSAFD5`FRfbHwk2{x#^u-+LZUBmQ0>1xab@zLu6QXo7x_OF6{1($Xk`{QlH*TU*E(%T+qRc)$9=C#&WTl_==X8wcNgAK}i7>E+iaSb`2 zcOWe{FZS5CwSqjf;}wlih6QFDSyU+fOlTFQ4c56-k6SEw*d!8H6m*|Frfe1+7&enS z*!KU^cEV5H$;oFLnl%G;!6hmPZ{8rLkvrqm-FoAgt_CDlqiGy(^0VE^L#qH+E;HbL z@@|CFY6xaE;e0JK?kPtDJ}6K;N7&1kmGaM6-+$JdHq&c$BFof>(*>AV%Wdr`D3jyA z$&~%xpNuBWOvrRTpZjIB;{!pSg%Oev4wEtt@zV+~D_s&zbu}L}?RW7RDo50qMGo8- zCq?pqXU$mQU59Ih{YJ!Sd&hcYaa7F4X79Y692ci=Xd4DD_~2eaj3b4M`kTLkGt7{%i(q@BP6MuUSW)q@3)21vJ9d2g5xvhA=$M-ZOK0 z0TZ!9Pf7;fQ-(4>*#0vjsp9I-j21QEvYVp||M-P`sh7u(MvzseSuI}@RecA7O#b6_ zV@sSA9%khS+GTRypzlx1{IW)vSUdi06jKHLr54ywy!}%dlfVz#S2ITiuq`1dA-)U$eR2Y%;`+wP zip=oI^7s};cLd*d6(rx=FU{D7zn`AY<(OsLX<2q8v|SpPsyhV3jFkL%xT-OxhnmCw zU??(TK$~N`Mw@{cnFAy$?nz8P7AA!-hv1`7vg#x7ByF? zW)eG^vxV@u(pWTQc?&!ppTuU3e7O_pEa53P;1HP$P>S8xVUiH~Xwv38Rddb7Br24y zui~9HmobQ1SwIkY_H4C5eBjrl)ZU8gb9!bq%hy4Kp=i^?4NV5(*?U`tvO77Sh?>_e zlWHY!!-LR;wXG>@x0<-k&*k%i?`;lgB*!NSNhzH^f1)r`sC$*PiI3kj`^B=Fb9z8! zas}+}ibClOIaYOxV3nY{Eup^F{Jc>VF;Jl*493{@TswXeO<%P5CQLT?lt!%p(^!d7 z{M+|8wptQNzetfH(78=kbES9i0`E%mnvT?lI$6vS5X;t$dygTBg4Q2{T6{N+s@95G zf|r_m&)-go^Vs8~6r9o)k0d*ACqT94$JiOda@u|8-3mXEv!gAfA`9r0g?HwzHmnYe zab7u3Oi|DFCMid}fYBcR;RmCdWK<<0pLj#rL;j`XDCf;AI}qUSc(#4^(2XSY{mAHlrGQct;0 zU(%Uxy>Q@IlrdNq=ZPvMtpG+2>{&bfm`JMIbD}i*^I*cE5Kb=}Jw-J(xF>J>Kik@ggLYhpkUUBhDX^_qfgKh1m(K%!fxnM6(UmcU4tI=k*) zZTpoRkBCS*P*PhqYWfXNSGcasM}c?ZN|r{x(wGHF$${1ainp%se(@EzeO1)}Tq=+v z%JzDaqyl_IGGo840#fMsm7J!(d2_aO$>zsSd>Vv+BpfLH;@+~9lb(71d zK;OlN(+D7tvy5uoAxUaE)%lqR&A>o=`Mbc?(b*UZZd@vvfZJ4|&xI+@DZlcjvhLPvKw7&M7K|Fv=c^IC-7NE}Pw2QgsiTtSk%AQH9Fef%_=Qp{vmY}i1b9+ z`1OoK#*mJgwxA$>4L;BmEkb7X@&V(8VD1bA3crvdF5AD-y+kc^J@-Tmh7Yz zWrm}{?h;L`?1OjK3k#3@slPW@Ut?XI$*&OWr>+5Xyb!$b5en{pvi*6_7u?4y>u2IP zO&(U}^0t(Sa%=K*j>0{&G_m+(-pC2`;Tt=aYDu!X27@d>CIK! zDF*+g77#jAR+e|7ZtwoxvrTL_;KHiu{9^9aT;^aEK;01D@&^>WU!5JZZTuPyOd88S zNdjhG;S_N)KA;CNBO+qoRYu)nMnI>_q9U^u6bf)X7YJ7 z5nfnpaTB=G&q60%-Vctq930$auxDlG9Jx=B%-S>mFcbZI!I5kDL}$^_x0kIrLG0Bc z9DOC}lm@vS&CQk_To&av-(T>~=JMX0pSHYg`!(M#+NQ?~WWI93ksu*+Zd;Y#o}`yG zI9{mwKJdA!j&+xu$+=sgV8eZiNVfq}K?vWH*^%Erg4mX9iv*o%PaUw`@k5j3p6auFgv!?qb1`O3V6Q>R+z&X6eH~e~xG3!s6In1?GA}Md zkn{ufXIB;ElvXaMs2qhu^cp=RLW9`-sT^T9>^es!6U8&5x$&w@UrVoahJ?>gXEEk9 z(H3g?F`_h?>3-OVvxz_}p7ORLF;7RXq^qXe;u-p7&izI?-hkEdzL=JuSSe0D4f&k1 zwk$dw)^5FCQVjGoUO{MM4-`UQzKQvZwyYQJeTyb{7x3&0aq`D*ad|~vMXVDY z7rJ#MGQvFyfSb@!o=fuaMs<>}X+5FSUKiV_eobOIAt7F-627VX(>Yd2FvLg>`+Mto zoTAIcVD#FUuRpIvN+F_=I>jTbA3e2L0tm4Ww9w4W2oX2r zNr5I)u`A@Am=-5WD1un24p%eigImayq>INX-SmgvV*`?D$Z~Ut6HH>HXWKw6?l9&V z46lFIu#Aj!Drd1+kiC#=m-(~7(&nK~YOaiQ!OfZ3I%b9X{h}?~l5f^>kBVP>W62_W z6yYxTo}zpt8-K=loWt>Eh_#~CrHOM)X|<19NuSQgyvFxdXzyyI)>o%hd?N;b-@1OXj?N^H z_PiG{5g=ps-(S7CE_`$<%<#6KW-X78eJXasj{I7b)AT1O zKDV`?Gd-XLkWSzr^Sjiz*hEB@9(rQs83^n1D~KcsHgbOaRNUIc&hxcg?d(s$onS;n zh_AU@V{J?fMO9xR$v^S2^+Gjcv0ARf!3TKMZovO@=JVt`cfhn#{_pr52?~YAr=*0< zEaJI#MMgyMvHhGGdVIK+c;DdQFSBipl?Q*w(8GhjKbA^U{u$f?#7kDmZG3zip1F;iHg4_Kl)W}Pz{LWeQ8QZ7 z&Q7%zx8YgpyMQ5rDmBdXPD_;LRH^x|tG7;}b|->AfhV`8o#@?v~)&Kolk(HvQ-6Rv1-aeo1Nvqy^}S= zvwdqgw_r4u)nuvm1BYGzM@wYH{RhM0-Rr)siR!}DVN1na6-c2kmyPOwXDCEaf6pmA zA^w}!qxvtQf$&dWg79s6NZi`aabSV^1VSOnk>2RiX+U32*o)TKzfW!Dowo<%*x1JM zxxbRmm>6eZGwL~iGen+GNHr1FmkhI2)3QJtn^ zsJ(=<=p^W)*o~;x!#9C^Iz;4ph=)v9rhvFtJrCkvOIYFS@Uq}JYh>-chN6<~YTx7} z_UTwQ*tN9r0>KfhF&tQA)ac)_H6EG0dUGFKx{XDX+_kyZHfDdR4c_@)`(vgspi7Ol$ZUf-^a_VOvdb~~6z#>j`gSZt4aWdu`B z_(UOaxj(iS`6PvNe)LgwW-dn=%ln5&afVZ6+v-(Auddjc@W|yjq^WG%@bT5=(kqiT4z<-V)KXr zYuA11V3BRlvVgdZihPRP&AN?}5t_GPuh@Y&UekV@r~tQip|sj&%AaOj z0VI_2!Zhu*LBXKm`7=oYUt1HA`@YA}!oqH{i`l2t&6^6%T3#}n?aZ>2D{Vq|Z(CZ{ z2KV+PxC1jd0~8Hp|N1pGuo*mnnf`uI#60I&od0`0edN)>n3Art0& zUQgMxwiKO?vgUL;J2xBX5lI7|tLFrYW_--f9xv1zA2UopgJ!p0{J!}^fZh?@fv6iG z0&Z{<@IGIP^yI3Px~Z>Ap8kF=4tiM1wc5_mg~E`#Bimu(mI3}jP@q^ZG~v@8xaBVG zrVjS93C7~1Y%rG66le@J{1id$M59(A>{O1a+Ih0AOhG2qFd^@=e2KO?pQGzd6G$N! zw-#eLBo+r=NO&gh=Y&_0k-70zM!H<)n6%o73}U*dQ&TQVIR?y1`8g%#cQM6WpxwNt zy4#J$A)1<6kbQ?1+7T{z8TF>fVV^6vE27^bsAx55*ygo3B2zI+q8VSG90%llezt?~^$RrB z2Osu+>IQp?nD@m7ZfVOvT7KV+-PDcK#&aKOw{MWgmQNzGD!Y)+hB6R=^Nml}6Nj@W zC?QvLK3hviKMpD0zL}kKZ47+P87$>kv~+yUZ9jvk$YQ+GBX7E+GjFoWyiDUmLt~lz z_^#pZEBOA^<&ozB0Z@)__f!Rvnwj(3rwTtQ>f05z=B7NKEVqL-7n82;Vn~d!8y`cz zl@<^-DV?a&hW;b2`k*vOEQSncygIxmfhrr}#oY}YxX#GJ70JDT9@x})RIMv#Y%l4G zGnhK7^XSf_j?C~3VbC(qCp7JK$rW+F+)f6%%6E^$T@r!4T@|WMn`in>-KWA%=bK|7 z`%1f|!KJ{}p1a3;vQrT$bk~;~Yf2BJ9K+5JZCkedmIyd?U#6d(dsJpC+#jFX&Y$^- z%&Ne|XwXE5rvmMayWKoz+pbY~Faj%FI5=TBx-<`jdfXK?pq67hFYz?Pan+rel`D}8*SU|c zMg{^iZGKXDTMy3pJ&tO~LNIvOlzuonTE&oxM+-b$EH>qa<5CPQON=+|9de8!601;- zeQh~7bKGLJDe$LE7T-_%9g^Z7LLPNqD+?mKwVpv+F3+Wo<` z-Fw~4&gPm2(%*ngxi9{mxvAI&y_1k#N618vq z$qYZk?D-wwjHp7q1sT}?AiE475=$L{DS&UdJL<_Ye=CLeQbSG)^H3D*GfV*2EP^K0 ziKaG;3@8*RntCC|Bk+6akl^tqmuTj$mp`ZPTja;`P4jkT#`n9jvL!Ad<6m?;EAenu zGDRwX`(`H9JJMptkhR>=v1|V*j@k9b$bo*8(v>H!TOu{PV({|V2`Il)&KWb2=0Wu( zyS&>&0&>c(cdvzlV?u?&s%QZMvOhzlTfQ|m*Fnbj%j-FSZC(D;F{-oro!m#I0$&fPUsc0}EG;p36je{DBfvBaPHYxU>Ep1f z);^=8Vy&g#sdCw{Z-v4Za+l60Qmb0`P>I%(TD9v8fN|7jDzpq3i%{qyz1aIHaZuI z*kVi0`~l1Iq6^5~qN@VDuDfqY?tHB%Ymspx% zVhol`i@lZFYAvYd2t@=gF@e+UxliroceV7W*ZdpNnM8-$vMDNoR-FJH4yef55^|pY znV2X)sG+t=2gx+OFhsN5!ArP9%_4cu+aqpW^|ZV62Iqx{%r~+1re@*kgRn8>fFc+A z^AcosM5pEwUQdrUYPDh`K?@Y(*!>txlqe zk~%C`3#M&kkZV{p;`2yd$G~<;#9jD|Mj6W4YIfHN;r>WZuN@-oc~en2l%{r3LvwZv zZP?qL|I|4d+S&|4h@us8C*bqZu+a+ujTK+ z+M0ZbddGG^xK~KV=z+nEym?&jYa)!UI56w=F(|k{$w+l`Y2R&_6JS^=+A}XUr??Md zL3@=qxXD=YmOYAIXzdA3d$eEC;_5(M%Jk8;RlN37t8p2< zeL1HKk9>a-0Yy)%B($p}GZt^Tr_Q+F&*qwnGUxQ+J2S1Ng`_X@)S`RsRLnEUAj2~R zsoz8W1C8URmxniPtXR&LV|Q*o-zmacyF^rRG4V!2$@vz$O5Y@YzhYTX>e*E0=~n$z z@sI4cHE!3se!c~@=k$_CBF?})_gcv$%YFPQR;GON@=^EW+Rc*{9MAJ(ZD)oL6YS4M zRtAVY;z?kE?p|)vo36Dfvu9jRwq3MBnJn_O5GKE9H>~@Jb19`wBX}5^*+?vBvjSNvrNi$^)&6IJ0$C17|Bfk8= zr7#LnD(6eSNmx0xbc(;N2SOI4TJsl_1fsyNb;%}CJ4Fwe+E=X~&uWN<7WVGB@cwLYNu_GW*TK?7om^o1D6&7x#lRyrB zNZzi@B?YDVMhaJ^>CRDp{aPDTTd{i<)`XlNK64@Z4N38kFSHRJ`SZxp$GY1Kx6qaUL!ev%UkOvFWPD;+B_)%(ICh5$ ztb5ODA9L)jrji97DJ)=U~X+@$_?oD z|43w5$>_UT79#g6 z>-GRJn_L;*^9FI-j9^$5>}nz=;n}Gp|HfoGOv<`o_c<{Y6c;lUg{M*tJ^!u|G{kbw zTm7zP3xP$(sWTT@b-U8CkWlK040y{>RsDi@P~W4P`;cTPV6ne%OpFw!j3x-^`F46$ zZRu-ui+!wo9!w+n1&rCScrY>G6hPWyRM;&5bsWVP!OvXf1P59QfXf zyzK6Jpvu)1zLP~}bv#Zn044IR zMFYiqCC{_kP2ZljiLzD2ve80+e$<|do8T!2_;ySNdlu@gLG%n*U?*|qt|a;;E3anoLFaV8)w5P%+xyTPR`V8^LWdOqYE3#_w{za zSw_A{+Z#BqHl&(6>${-5Ut`nmhRZZMXo1$VR(rj(h!bgL9cXrlnc~yfh4mjYmamC;KYhW9+zk!*#d$|KJZw1>&NoloD8a=_0rr%lhS~5eX4R~Y>6yAW z*R*s~cy12_zXe$oF>n3{8mIs2!20t2u~~m?TPacsrxCz0`R^+x6lv}w8l{q7aR_Mr z(HTX^L#Fu*l_C7Rwny*!RI>(ek04QHU`HP3qj%JId#{tUe)kNnr>dUgb%mFRr5c`R zejEeU443)7JB#qYnV(zmxOaIfF;+jv3A(&$R`wI1KHNS!p(|a$@H;;_9PvBHXA(bW z;9c{}9Yy0f>?qF?V^#6v&Dmg@_n(e^Q)^KjU?HkV#iOr@AqhEM=hlmyMRk~g#wrV&@ymQh zvy1M)Epjf$s$}fwr!xgkZpK9ldUZc9G1px`#i3%Q8>V}UTVDawY|;EQVUZvBp6~Rg zpGa4{zPGnIde;>CP=mIqZDYY5-oS3Le{0U8HqYe+C0Mq?N_yhiw|(YgIl2_aUW#jS zlE=#QLZ!K+EZlYw3|v9Vf$P^}=Gxvlamu(F@RdHkeo(5B?=iMfi=BZzw#SbP1;;E}j1sA_mS!X^X9>EQ!nZN9 zaDlsQ;0uecGfzDlZ58+AW$t>yJ5Sud*rTkNh1}$S|Lo-Web;TeD|82?gZKfO7L%F- zvD~l8O(YZ#l~IG%6i(d|oSX|l#?7r90#C%K53ru~Lw0II8SY{?)N0VCubxVr6dl9Q zQ%1g7JEyW_C1bZg* z%-+bZMh5ac4=8t%0Yk*Z6?Fn#mK9bft!fJOH`6snYVhf^OA|>|!x8ZNRP}oS4#3Zn zJ6_eC0<)r@uKl` zO8lS?dy074=*_!BxGwQQcpTRO^VxKIahlcY$PV(S{oMNWEdu1uO{0x{@f`K6j^N@Q zllGCSXtWPaKpM(~ag2`jqmK=aDE>v#_{r&Uo!5E2IvyA+R<@%YS3OpOnc4$pkkaCJ z=_yiU&h*(!cN-=MSk%z^>z*{jDs%cA?O9(R8N!_`Wm6ZV@O^m&$)}7c1XKWtHu_9I zEV{lcEb8ebDp$`+m$v?<@ylZs1)?i}qbXMTgq z<`aXi2pkV4ZtnE0BlKA2+@OxmUz*}}PZ05)_JyNOIxSOl_Imuhj!nf?*l7Kxa?=P_ zQtmH#y|1Q6hF`2i)Py6RnNIu++*!T4)Up4AGDfIU##Z;(BJ#^vH({@Z?<9NCroFv< z5rnqPEv4qpiF>lTZ-NkUaY;l)MT7i!Tw|r=)GBw>OLmLIxRSqoF-DD^B{ZL#Z+>?N z^LM^NY|WDeFLU84P9-WtERCe}u(KH~B;2S;Yg31llFBsB3HT+|rzC?-MDe#(6asLB zcCgt{xS)hotHg>QDvV$jsm)HbY{FQ((!3al4JO0k9S@+(*}WMyBs#BYD`g3OVB<&1 zJAzCYFddw!=LiXvpSau3Ws!%twl9XM%+e>xqudg++a(O&$$j3SxrX}*&1ydzB zy4H{UOq~11qBDNQ)i&wN8$j9A%5i(EyWgjPjNK}F^mjhE@%Pt(1>)2vZ!BAt-MawHva zK{G>Wgo~?)V+A;`k&mX5H@Nzykx&Duw^!K3 ze0eOD86L)%2b9Nph()8{m;k)IytFd$ZCilXClJB7xTpQ}Ya@$ly48$el=cKOFF)nE z54+UP`}YW(ZMTA-x{$fE1{fHRQO4Rq7cF8~aartaD~bM-w}yHiVCH7E=hOw2Cj0fS z*p_wW0#68u06E!Mos*ZdZO^{;j!QiHJu!w$!P$)3?-KzAsdHI^&RweoY;-Q}lfS*F zt+~>)5MV{92`-*R2LSKs1@{pQBPwD`-Sw!iYpI3X7 zjnrEbcKoLI`}d4+JOuKOTK(%x+GzYoBLA;^J|g?y<8g$4^GxUH#CTiYSaG+VD3bwe zof@HGbabQ9V@B}W&TXgH*&~486EvjDHG~7N%Ibt4ixpX)Z${OMuBPN@Qtsq+S%QBi7$a|S_2J}#=v;pV_@LSogLk(FBy|6_NaZMG&?ls4CMu1$CM|W%`^!WIsXQol)r#1xP&qXMVxF-WrQ??$jByC=4p~_MTr5mQ~z3?Rlou#wLi+yhP&X$)A(RdG4o7 zBhnD9M@)STmC5VLz)P(9boL9fb;)vXR7h%ng3q#i_y9_p?t zc60b)q@-!yFL;mFgB(}(_UqV>KjwOh^z$``$-^p+w8y}4#c^G?Pb#-^j zHEYGG^w1cxJYdsWV?I4*&q3iGh+sp-My?k8v0mwFep zd%<;0=H`0f$SaW74^*{W529wv+jX;33?I=3()>8J(DrH$D6~=CuQhG+S8Msp{5V{W z{|e69_nRth>aVSrN6d}b!!Bk=&y)Q#ww5z^b8H_SayS3f2_%zq9pNeN~j$V#}FyniCiR zS`BaXUAjqEbZsc3r@x>sn&V=z&iCZ*WlW5WbK4!rvr4;cO8>=%nX-&UATVmxr*C=R zC$1PsgMKhgLj!S1NvnBLPn=X`gK>By_R60Q4KJfAjB$zQ_e~2x*LmA9=|r(q*&&B9 z)^@uby->R!lj|&FVuEdFV&+i2jAKcoKiY>Z@+c3A!d76!sEH45nje^gQ2p!Xb4pSXo6}uU9;cbZ(5`Z?UbT@+Ux- z&PXS=u&}VoXeRhGD|AyARk1NdGruv>TtEz4Xidw3bm|mvb!} zO)8DVd@ZGtI{vx-_|ESvk$iol>5wOU3wyFWG4lB(*WzqkvYpU>? zN7oXQQx~bif9|N^kgOG$ysN3NvD=p=(BK{DO$rJ!zFmFfLjGj<(~e}gx-e5-UWIwi zvWt^1!#PQoaI){6P0JTl-17@2ib+m3D_N~=_rK%d;;ce|7ezqK1*`K?M(*c!cOw;- z#UumgRzYv%6w-LY)42n-ml!#BZszLE$hni5nNUrtEfSz$B!F*wnjWNxz=K1HspeG` zshS#nR zG+vgl${_w)FecN79_1Zz{GQd&sK`2m0?0ye43{ZRjjS~Oa-TE>kn4#!7zKG@$OEK5wB2D=vl^2yedMrOS*3mlon1)^J?Xf2G9j=&94`ZMSHmlN6oslG%E(XolMz2J`Er})MHdcwNa@e?*ySX7FY%8IHeNEBZOU~OHY{;n}w z+V)w-PuaikADnM=e!rRP{L7fZxQES0n>u(NZqNJ2(Kh?Esv~Hj!F6&91@$nCA?H@$0&~4eN)=|4%@*ZAUTUDTCh7bWt}t$&56@C8#(D3CQKsVF z!wb-QbW-?PMw;GFAe5HqD^!LO5WaW*n#T%ildSr{|N8?vD=T>g^vSF4bX` zBNX4MkyfM2dx`9e*e`c?|>>c{VTH5fOOUJ(Ga6>t|#r45#LO9MLIL`EV)iE zId6<-cmVpzp{Rrb-zG)5t@z$Dv0@ApREDZD)(%PYmxJ2SYdEw7{%Np-R5X?hm(v{7 z66cbOY5;dWE_>MeP<6+Y{s?a^2jXer!*Y`7;UrY?w~GlohX$A%@w8GI)ztrhR?lyw z*-_TimHY?Q0GnzWf0eIvqly3BfBp}){1t aO?R#ZqqGfs4g8a21O*vY>2gWq;Qs|<#36kE literal 0 HcmV?d00001 diff --git a/module_analysis/tests/__init__.py b/module_analysis/tests/__init__.py new file mode 100644 index 00000000000..d9b96c4fa5a --- /dev/null +++ b/module_analysis/tests/__init__.py @@ -0,0 +1 @@ +from . import test_module diff --git a/module_analysis/tests/test_module.py b/module_analysis/tests/test_module.py new file mode 100644 index 00000000000..66bc5a01715 --- /dev/null +++ b/module_analysis/tests/test_module.py @@ -0,0 +1,33 @@ +# Copyright (C) 2019-Today: GRAP () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo.tests.common import TransactionCase, post_install + + +@post_install(True) +class TestModule(TransactionCase): + + def setUp(self): + super().setUp() + self.IrModuleModule = self.env['ir.module.module'] + + def test_installed_modules(self): + installed_modules = self.IrModuleModule.search( + [('state', '=', 'installed')]) + for module in installed_modules: + self.assertTrue( + module.python_code_qty > 0 or + module.xml_code_qty > 0 or + module.js_code_qty > 0, + "module '%s' doesn't have code analysed defined, whereas it is" + " installed." % (module.name)) + + def test_uninstalled_modules(self): + uninstalled_modules = self.IrModuleModule.search( + [('state', '!=', 'installed')]) + for module in uninstalled_modules: + self.assertTrue( + module.python_code_qty == 0, + "module '%s' has python lines defined, whereas it is" + " not installed." % (module.name)) diff --git a/module_analysis/views/menu.xml b/module_analysis/views/menu.xml new file mode 100644 index 00000000000..70afacfdfb1 --- /dev/null +++ b/module_analysis/views/menu.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + diff --git a/module_analysis/views/view_base_module_update.xml b/module_analysis/views/view_base_module_update.xml new file mode 100644 index 00000000000..68182a22746 --- /dev/null +++ b/module_analysis/views/view_base_module_update.xml @@ -0,0 +1,20 @@ + + + + + + + base.module.update + + + + + + + + + diff --git a/module_analysis/views/view_ir_module_author.xml b/module_analysis/views/view_ir_module_author.xml new file mode 100644 index 00000000000..67df118e12b --- /dev/null +++ b/module_analysis/views/view_ir_module_author.xml @@ -0,0 +1,52 @@ + + + + + + + ir.module.author + +

+ +
+
+

+
+ + + +
+ + + + + + + ir.module.author + + + + + + + + + + Modules Authors + ir.actions.act_window + ir.module.author + form + tree,form + + + + + + diff --git a/module_analysis/views/view_ir_module_module.xml b/module_analysis/views/view_ir_module_module.xml new file mode 100644 index 00000000000..29baf1d0109 --- /dev/null +++ b/module_analysis/views/view_ir_module_module.xml @@ -0,0 +1,67 @@ + + + + + + + ir.module.module + + + +
+

Module Analysis

+ + +

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runbot

+

This module allows you to know ‘how much code’ is running on your Odoo +instance, group by ‘Type’ (Odoo Core, OCA, other…)

+

This module can be usefull in the following cases :

+
    +
  • To analyse the size of your technical debt, regarding your Custom modules
  • +
  • To know the ratio between Odoo / OCA and Custom modules
  • +
  • To evaluate the amount to pay to odoo to upgrade your custom code, or the +induced workload
  • +
+https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/installed_modules_by_types.png +

For that purpose, it adds new concepts

+
    +
  • ir.module.author, based on the value author present in the manifest +file.
  • +
+https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/module_authors.png +
    +
  • ir.module.type, populated by default with Odoo and OCA values.
  • +
+https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/module_types.png +

Each installed modules have extra data in the ‘Technical Data’ tab :

+https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/module_form.png +

Table of contents

+ +
+

Installation

+

To use this module, you have to install the pygount python librairy.

+

pip install pygount

+
+
+

Configuration

+
    +
  • Go to Apps / Module Analysis / Modules Types Rules
  • +
+

The Module types Rules are usefull to get the Type of a module, based on +it information.

+

This module comes with default rules.

+
+https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/default_module_type_rules.png +
+

You can add your custom rules to identify the modules your team have +developped for exemple,

+
+https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/add_module_type_rules.png +
+

to update the data, you have to :

+
    +
  • Go to ‘Apps’ / ‘Update Apps List’

    +
  • +
  • Check the box ‘Analyse Installed modules’

    +
    +https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/base_module_update.png +
    +
  • +
+

This will update analysis of your installed modules.

+
+

Adding Extra data

+

If you want to analyse other data, (for exemple, having the number of HTML +files), create a custom modules and overload the module model :

+
+from odoo import api, fields, models
+
+class IrModuleModule(models.Model):
+   _inherit = 'ir.module.module'
+
+   xml_documentation_qty = fields.Integer(
+      string='Quantity of Comments in XML Files')
+
+  @api.model
+  def _get_analyse_settings(self):
+      res = super()._get_analyse_settings()
+      if not '.html' in res:
+          res['.html'] = {}
+      res['.html']['documentation'] 'xml_documentation_qty'
+      return res
+
+
+
+

Exclude files and directories

+

Two parameters are availaible in ‘Settings’ / ‘Technical’ / ‘Parameters’ +‘System Parameters’ :

+
+https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/config_parameters.png +
+

The list of folders and filename will be exclude from the analysis. +You can change the default settings.

+
+
+
+

Usage

+
    +
  • Go to ‘Apps’ / ‘Module Analysis’ / ‘Installed module by Types’
  • +
+

Open the stats to analyse the detail of the code installed

+
+https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/analysis_pivot.png +https://raw.githubusercontent.com/OCA/server-tools/12.0/module_analysis/static/description/analysis_pie.png +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • GRAP
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/server-tools project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+