| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/module-composition-analysis |
| GIT | |
| GIT | https://github.com/OCA/module-composition-analysis.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/module-composition-analysis/tree/18.0/odoo_project |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Tools |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | Sébastien Alix, OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/module-composition-analysis |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:20 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - component OCA/module-composition-analysis: - odoo_repository OCA/queue: - queue_job OCA/server-tools: - base_time_window odoo/odoo: - base_sparse_field - base - base_setup - web - bus - web_tour - html_editor |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
gitpython odoo-addons-parser pyyaml requests cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module allows you to declare your Odoo projects with the list of installed modules. Based on the data collected by `odoo_repository` module, it will: - give some code stats (lines of code, and how they are spread among Odoo/OCA/your organization) - give the list of modules available for upgrade in current Odoo version (based on module versions) - list modules still hosted in a pending Pull Request (so not yet merged, could be considered as technical debt) - list modules available in your project repository (if any) but not installed in your database (dead code) |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
odoo_module_branch_view_form |
odoo.module.branch.form.inherit | odoo.module.branch | page | Inherits odoo_repository.odoo_module_branch_view_form |
odoo_module_branch_view_search |
odoo.module.branch.search.inherit | odoo.module.branch | filter | Inherits odoo_repository.odoo_module_branch_view_search |
odoo_project_import_modules_view_form |
odoo.project.import.modules.form | odoo.project.import.modules | form | New |
odoo_project_module_view_form |
odoo.project.module.form.inherit | odoo.project.module | field | Inherits odoo_repository.odoo_module_branch_view_form |
odoo_project_module_view_pivot |
odoo.project.module.pivot | odoo.project.module | pivot | New |
odoo_project_module_view_search |
odoo.project.module.search.inherit | odoo.project.module | field | Inherits odoo_repository.odoo_module_branch_view_search |
odoo_project_module_view_tree |
odoo.project.module.list.inherit | odoo.project.module | list | Inherits odoo_repository.odoo_module_branch_view_tree |
odoo_project_module_view_tree_recursive_dependencies |
odoo.project.module.list.recursive_dependencies | odoo.project.module | list | Inherits odoo_project_module_view_tree |
odoo_project_view_form |
odoo.project.form | odoo.project | form | New |
odoo_project_view_search |
odoo.project.search | odoo.project | search | New |
odoo_project_view_tree |
odoo.project.list | odoo.project | list | New |
odoo_repository_view_form |
odoo.repository.form.inherit | odoo.repository | div | Inherits odoo_repository.odoo_repository_view_form |
odoo_project_ids
Many2many → odoo.project
column1='module_branch_id'
column2='odoo_project_id'
comodel_name='odoo.project'
compute='_compute_module_ids'
relation='odoo_project_module_branch_rel'
store=True
string='Projects'
odoo_project_module_ids
One2many → odoo.project.module
comodel_name='odoo.project.module'
inverse_name='module_branch_id'
string='Deployed Modules'
No public methods.
active
Boolean
default=True
available_odoo_version_ids
One2many → odoo.branch
comodel_name='odoo.branch'
compute='_compute_available_odoo_version_ids'
string='Available Odoo Versions'
module_ids
Many2many → odoo.module
column1='odoo_project_id'
column2='module_id'
comodel_name='odoo.module'
compute='_compute_module_ids'
relation='odoo_project_module_rel'
store=True
string='Modules'
module_not_installed_ids
Many2many → odoo.module.branch
comodel_name='odoo.module.branch'
compute='_compute_module_not_installed_ids'
help='Modules available in the project repository but not installed.'
string='Modules not installed'
modules_count
Integer
compute='_compute_modules_count'
name
Char
index=True
required=True
odoo_version_id
Many2one → odoo.branch
comodel_name='odoo.branch'
index=True
ondelete='restrict'
store=True
string='Odoo Version'
project_module_ids
One2many → odoo.project.module
comodel_name='odoo.project.module'
inverse_name='odoo_project_id'
string='Deployed Modules'
repository_branch_id
Many2one → odoo.repository.branch
comodel_name='odoo.repository.branch'
compute='_compute_repository_branch_id'
index=True
store=True
string='Repository / Branch'
repository_id
Many2one → odoo.repository
comodel_name='odoo.repository'
domain=[('specific', '=', True)]
help='Repository this project is based on (optional). You can start to build/simulate a project without repository to get some figures.'
index=True
store=True
string='Repository'
unknown_module_ids
Many2many → odoo.module.branch
comodel_name='odoo.module.branch'
compute='_compute_unknown_module_ids'
help='Modules installed but cannot be found among repositories/branches.'
string='Modules unknown'
unmerged_module_ids
Many2many → odoo.module.branch
comodel_name='odoo.module.branch'
compute='_compute_unmerged_module_ids'
help='Modules installed belonging to an open PR.'
string='Modules to merge'
action_find_unknown_modules(self)
action_scan(self, force=False)
open_import_modules(self)
open_modules(self)
additional_module_ids
Many2many → odoo.module.branch
comodel_name='odoo.module.branch'
domain="[('branch_id', '=', odoo_version_id), ('repository_id', '!=', False)]"
string='Additional Modules'
import_missing_dependencies
Boolean
default=False
help='Import module dependencies that are not part of the list above to get an exhaustive list of modules installed in the project.'
modules_list
Text
help='Copy/paste your list of technical module names here.\nOne module per line with an optional version number (separated by any special character (space, tabulation, comma...).'
odoo_project_id
Many2one → odoo.project
comodel_name='odoo.project'
required=True
string='Project'
odoo_version_id
Many2one
related='odoo_project_id.odoo_version_id'
action_import(self)
installed_reverse_dependency_ids
Many2many → odoo.project.module
comodel_name='odoo.project.module'
compute='_compute_installed_reverse_dependency_ids'
string='Installed Reverse Dependencies'
installed_version
Char
help='Installed version in project database.'
installed_version_id
Many2one → odoo.module.branch.version
comodel_name='odoo.module.branch.version'
compute='_compute_installed_version_id'
help='If the real installed version is not available in the history of versions (could come from a pending merge not scanned), this field computes the nearest version available.'
string='Nearest installed version'
migration_scripts
Boolean
compute='_compute_migration_scripts'
help='Available migration scripts between installed and last version.'
store=True
module_branch_id
Many2one → odoo.module.branch
comodel_name='odoo.module.branch'
ondelete='cascade'
required=True
string='Upstream Module'
not_installed_reverse_dependency_ids
Many2many → odoo.module.branch
comodel_name='odoo.module.branch'
compute='_compute_installed_reverse_dependency_ids'
string='Not Installed Reverse Dependencies'
odoo_project_id
Many2one → odoo.project
comodel_name='odoo.project'
ondelete='cascade'
string='Project'
to_upgrade
Boolean
compute='_compute_to_upgrade'
store=True
open_recursive_dependencies(self)
project_count
Integer
compute='_compute_project_count'
project_ids
One2many → odoo.project
comodel_name='odoo.project'
inverse_name='repository_id'
string='Projects'
action_view_projects(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/module-composition-analysis |
| GIT | |
| GIT | https://github.com/OCA/module-composition-analysis.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/module-composition-analysis/tree/16.0/odoo_project |
| VERSION | |
| VERSION | 1.0.2 |
| CATEGORY | |
| CATEGORY | Tools |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | GitHub, Sébastien Alix, Weblate, OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/module-composition-analysis |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:12:08 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - component OCA/module-composition-analysis: - odoo_repository OCA/queue: - queue_job OCA/server-tools: - base_time_window odoo/odoo: - base_sparse_field - base - base_setup - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
gitpython odoo-addons-parser pyyaml requests cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module allows you to declare your Odoo projects with the list of installed modules. Based on the data collected by `odoo_repository` module, it will: - give some code stats (lines of code, and how they are spread among Odoo/OCA/your organization) - give the list of modules available for upgrade in current Odoo version (based on module versions) - list modules still hosted in a pending Pull Request (so not yet merged, could be considered as technical debt) - list modules available in your project repository (if any) but not installed in your database (dead code) |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
odoo_module_branch_view_form |
odoo.module.branch.form.inherit | odoo.module.branch | page | Inherits odoo_repository.odoo_module_branch_view_form |
odoo_module_branch_view_search |
odoo.module.branch.search.inherit | odoo.module.branch | filter | Inherits odoo_repository.odoo_module_branch_view_search |
odoo_project_import_modules_view_form |
odoo.project.import.modules.form | odoo.project.import.modules | form | New |
odoo_project_module_view_form |
odoo.project.module.form.inherit | odoo.project.module | field | Inherits odoo_repository.odoo_module_branch_view_form |
odoo_project_module_view_pivot |
odoo.project.module.pivot | odoo.project.module | pivot | New |
odoo_project_module_view_search |
odoo.project.module.search.inherit | odoo.project.module | field | Inherits odoo_repository.odoo_module_branch_view_search |
odoo_project_module_view_tree |
odoo.project.module.tree.inherit | odoo.project.module | tree | Inherits odoo_repository.odoo_module_branch_view_tree |
odoo_project_module_view_tree_recursive_dependencies |
odoo.project.module.tree.recursive_dependencies | odoo.project.module | tree | Inherits odoo_project_module_view_tree |
odoo_project_view_form |
odoo.project.form | odoo.project | form | New |
odoo_project_view_search |
odoo.project.search | odoo.project | search | New |
odoo_project_view_tree |
odoo.project.tree | odoo.project | tree | New |
odoo_repository_view_form |
odoo.repository.form.inherit | odoo.repository | div | Inherits odoo_repository.odoo_repository_view_form |
odoo_project_ids
Many2many → odoo.project
column1='module_branch_id'
column2='odoo_project_id'
comodel_name='odoo.project'
compute='_compute_module_ids'
relation='odoo_project_module_branch_rel'
store=True
string='Projects'
odoo_project_module_ids
One2many → odoo.project.module
comodel_name='odoo.project.module'
inverse_name='module_branch_id'
string='Deployed Modules'
No public methods.
active
Boolean
default=True
available_odoo_version_ids
One2many → odoo.branch
comodel_name='odoo.branch'
compute='_compute_available_odoo_version_ids'
string='Available Odoo Versions'
module_ids
Many2many → odoo.module
column1='odoo_project_id'
column2='module_id'
comodel_name='odoo.module'
compute='_compute_module_ids'
relation='odoo_project_module_rel'
store=True
string='Modules'
module_not_installed_ids
Many2many → odoo.module.branch
comodel_name='odoo.module.branch'
compute='_compute_module_not_installed_ids'
help='Modules available in the project repository but not installed.'
string='Modules not installed'
modules_count
Integer
compute='_compute_modules_count'
name
Char
index=True
required=True
odoo_version_id
Many2one → odoo.branch
comodel_name='odoo.branch'
index=True
ondelete='restrict'
store=True
string='Odoo Version'
project_module_ids
One2many → odoo.project.module
comodel_name='odoo.project.module'
inverse_name='odoo_project_id'
string='Deployed Modules'
repository_branch_id
Many2one → odoo.repository.branch
comodel_name='odoo.repository.branch'
compute='_compute_repository_branch_id'
index=True
store=True
string='Repository / Branch'
repository_id
Many2one → odoo.repository
comodel_name='odoo.repository'
domain=[('specific', '=', True)]
help='Repository this project is based on (optional). You can start to build/simulate a project without repository to get some figures.'
index=True
store=True
string='Repository'
unknown_module_ids
Many2many → odoo.module.branch
comodel_name='odoo.module.branch'
compute='_compute_unknown_module_ids'
help='Modules installed but cannot be found among repositories/branches.'
string='Modules unknown'
unmerged_module_ids
Many2many → odoo.module.branch
comodel_name='odoo.module.branch'
compute='_compute_unmerged_module_ids'
help='Modules installed belonging to an open PR.'
string='Modules to merge'
action_find_unknown_modules(self)
action_scan(self, force=False)
open_import_modules(self)
open_modules(self)
additional_module_ids
Many2many → odoo.module.branch
comodel_name='odoo.module.branch'
domain="[('branch_id', '=', odoo_version_id), ('repository_id', '!=', False)]"
string='Additional Modules'
import_missing_dependencies
Boolean
default=False
help='Import module dependencies that are not part of the list above to get an exhaustive list of modules installed in the project.'
modules_list
Text
help='Copy/paste your list of technical module names here.\nOne module per line with an optional version number (separated by any special character (space, tabulation, comma...).'
odoo_project_id
Many2one → odoo.project
comodel_name='odoo.project'
required=True
string='Project'
odoo_version_id
Many2one
related='odoo_project_id.odoo_version_id'
action_import(self)
installed_reverse_dependency_ids
Many2many → odoo.project.module
comodel_name='odoo.project.module'
compute='_compute_installed_reverse_dependency_ids'
string='Installed Reverse Dependencies'
installed_version
Char
help='Installed version in project database.'
installed_version_id
Many2one → odoo.module.branch.version
comodel_name='odoo.module.branch.version'
compute='_compute_installed_version_id'
help='If the real installed version is not available in the history of versions (could come from a pending merge not scanned), this field computes the nearest version available.'
string='Nearest installed version'
migration_scripts
Boolean
compute='_compute_migration_scripts'
help='Available migration scripts between installed and last version.'
store=True
module_branch_id
Many2one → odoo.module.branch
comodel_name='odoo.module.branch'
ondelete='cascade'
required=True
string='Upstream Module'
not_installed_reverse_dependency_ids
Many2many → odoo.module.branch
comodel_name='odoo.module.branch'
compute='_compute_installed_reverse_dependency_ids'
string='Not Installed Reverse Dependencies'
odoo_project_id
Many2one → odoo.project
comodel_name='odoo.project'
ondelete='cascade'
string='Project'
to_upgrade
Boolean
compute='_compute_to_upgrade'
store=True
open_recursive_dependencies(self)
project_count
Integer
compute='_compute_project_count'
project_ids
One2many → odoo.project
comodel_name='odoo.project'
inverse_name='repository_id'
string='Projects'
action_view_projects(self)