Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
6a5e65b
Add 'odoo_repository'
sebalix Aug 28, 2023
8c002b7
odoo_repository: add settings panel
sebalix Oct 10, 2023
f470354
Add 'odoo_addons_analyzer' package
sebalix Nov 2, 2023
e602a63
New data model 'odoo.project.module'
sebalix Nov 3, 2023
cefc7e3
Apply pre-commit
sebalix Nov 3, 2023
a4b6514
odoo_repository: sync data from main node
sebalix Oct 10, 2023
8d4df27
odoo_repository: sort on 'sequence' for 'odoo.repository'
sebalix Nov 4, 2023
e125c58
odoo_repository: update 'unmerged_pr' filter label
sebalix Nov 8, 2023
ca53933
BaseScanner: rename '_get_commit_of_git_tree' method to '_get_last_co…
sebalix Nov 19, 2023
8842626
MigrationScanner: check is scanning the module is relevant
sebalix Nov 19, 2023
f9036e8
MigrationScanner: no need to fetch branches
sebalix Nov 19, 2023
0338300
odoo_repository_migration: fix sync data from main node
sebalix Nov 22, 2023
39151f6
odoo_repository: remove ORM cache from '_get_module'
sebalix Nov 23, 2023
f7bc24d
odoo_repository: limit the scan/force-scan to selected branches
sebalix Nov 26, 2023
613a3f2
odoo_repository: limit main node data fetch to selected branches
sebalix Nov 30, 2023
502a645
odoo_repository: ability to scan a branch on demand
sebalix Nov 30, 2023
b35dcb0
odoo_repository: improve branch form view
sebalix Nov 30, 2023
1da2b74
BaseScanner: fix '_get_commits_of_git_tree' to work without commit range
sebalix Nov 26, 2023
8b0d607
BaseScanner: improve '_get_commits_of_git_tree'
sebalix Feb 24, 2024
083522b
odoo_repository: test lib.scanner.BaseScanner
sebalix Apr 15, 2024
ae4d4b7
odoo_repository: automatically sort 'odoo.branch' records which are O…
sebalix Feb 24, 2024
6bfa780
odoo_repository: fix force scan of project/specific branches
sebalix Apr 8, 2024
8360f21
odoo_repository: test lib.scanner.RepositoryScanner
sebalix Apr 16, 2024
22a314a
odoo_repository: raise error if no branches configured when scanning
sebalix Apr 17, 2024
d014217
odoo_repository: configure git if no config file exists
sebalix Apr 17, 2024
cf5c266
BaseScanner: apply git configuration at repository level
sebalix Apr 18, 2024
cf4c2e3
odoo_repository: test repository scan
sebalix Apr 19, 2024
4d443c9
BaseScanner: remove hardcoded SSH key path
sebalix Apr 19, 2024
d41d040
odoo_repository: always link scanned module to highest priority repos…
sebalix Apr 19, 2024
908127f
RepositoryScanner: push module versions to Odoo
sebalix Nov 26, 2023
0d69b04
odoo_repository: add module version data model
sebalix Nov 26, 2023
971a344
odoo_repository: import scanned module versions
sebalix Nov 26, 2023
27390e3
odoo_repository: compute module URL to ease its browsing in upstream …
sebalix Apr 18, 2024
e133fea
odoo_repository: import module versions from main node
sebalix Dec 1, 2023
1e2582a
odoo_project_migration: list migration scripts to consider for a give…
sebalix Apr 19, 2024
fae9c02
BaseScanner: ensure to clean up local repository before checkout
sebalix Apr 22, 2024
e107873
odoo_repository: auto-archive odoo.repository.branch records
sebalix Apr 24, 2024
2554b79
odoo_repository: fix 'odoo.repository.action_scan' to not override 'b…
sebalix Apr 25, 2024
aa4ad33
MigrationScanner: store 'oca_port' cache in repositories data folder
sebalix Apr 25, 2024
074ed58
odoo_repository: handle git authentication with tokens
sebalix May 2, 2024
27601f0
odoo_repository: handle blacklisted modules
sebalix May 10, 2024
3ebf099
odoo_repository: add odoo/enterprise repository (archived by default)
sebalix May 10, 2024
6ea96c6
odoo_repository: provide common addons_path
sebalix May 10, 2024
9df45a1
odoo_repository: handle module removed from a repository branch
sebalix May 23, 2024
add4415
odoo_repository: fix singleton error in 'action_scan' method
sebalix May 23, 2024
979f82f
odoo_repository: fix module removal
sebalix Jun 13, 2024
a37ac74
odoo_repository: do not set repo type always required
sebalix Jun 14, 2024
b267ede
odoo_repository: add dependency levels of modules
sebalix Jul 12, 2024
09ae8fc
BaseScanner: workaround FS errors when cloning repositories
sebalix Jul 31, 2024
ff35699
odoo_repository: add option to workaround FS errors
sebalix Jul 31, 2024
b595399
odoo_repository: fix, enable 'test_odoo_repository_scan'
sebalix Aug 1, 2024
f734532
BaseScanner: always use remote URL provided by Odoo
sebalix Aug 20, 2024
b5462ca
odoo_repository: list recursive dependencies from module form
sebalix Aug 20, 2024
9ccdbe8
odoo_repository: remove readonly modifiers on 'odoo.repository' form
sebalix Aug 20, 2024
206f3e1
Scanner: do not raise an error if a branch doesn't exist
sebalix Aug 23, 2024
1cfbd88
Scanner: do not clone/fetch blobs
sebalix Aug 23, 2024
d55d21a
Scanner: disable some git GC features
sebalix Aug 26, 2024
6bf57f2
odoo_repository: fix access right on 'odoo.module.branch.version'
sebalix Aug 26, 2024
eeaf089
Scanner: remove dangling 'git' process
sebalix Aug 26, 2024
21c221e
odoo_repository: use 'queue_job__no_delay' ctx key in tests
sebalix Aug 26, 2024
7c2861f
BaseScanner: revert changes in '_fetch'
sebalix Aug 28, 2024
561bd32
BaseScanner: fix 'scan' method ('res' not defined)
sebalix Sep 12, 2024
3ad4f8c
odoo_repository: add odoo/design-themes repository
sebalix Sep 18, 2024
b6fb809
BaseScanner: fix '_get_last_fetched_commit' and '_checkout_branch'
sebalix Sep 18, 2024
608c533
BaseScanner: fix handling of ambiguous branches
sebalix Sep 18, 2024
7b8d242
BaseScanner: fix _checkout_branch
sebalix Sep 20, 2024
2aa74da
odoo_repository: imp. 'odoo.module.branch' tree view
sebalix Sep 20, 2024
2e3d406
BaseScanner: fix _checkout_branch
sebalix Sep 20, 2024
a2d2fa1
odoo_repository: split RepositoryScanner jobs in smaller jobs
sebalix Sep 22, 2024
db4ed64
odoo_repository_migration: split MigrationScanner jobs in smaller jobs
sebalix Sep 23, 2024
7eb7a6b
BaseScanner: fix git config safe.directory
sebalix Sep 25, 2024
1ad6b12
odoo_repository: fix _detect_modules_to_scan_on_branch if no jobs
sebalix Oct 11, 2024
3367106
BaseScanner: improve clone IO performance
sebalix Oct 17, 2024
e8fb442
odoo_repository: add User and Manager user groups
sebalix Oct 17, 2024
4264876
odoo_repository: add OCA/stock-weighing repository
sebalix Oct 18, 2024
6f76b48
BaseScanner: do not raise if a branch is not found when cloning
sebalix Oct 21, 2024
db467b6
odoo_repository: update app icon + clean up static/description folder
sebalix Oct 24, 2024
d551df0
odoo_repository: limit scan of repo to selected weekdays
sebalix Oct 28, 2024
c7566d3
odoo_repository: add 'button_box' div on repository form
sebalix Oct 18, 2024
c26cc44
odoo_repository: option to force cloned repository name
sebalix Oct 29, 2024
f491538
[REF] Allow same module name across different repositories
sebalix Oct 18, 2024
ae9cd5d
odoo_repository_*: rename some filters
sebalix Oct 31, 2024
bc158a6
MigrationScanner: upgrade oca-port
sebalix Sep 26, 2024
1a4c0a8
fixup! MigrationScanner: upgrade oca-port
sebalix Nov 13, 2024
6e20bb8
odoo_repository: add new OCA repositories
sebalix Nov 19, 2024
c08393a
odoo_repository[_migration]: fix access to 'ir.config_parameter'
sebalix Nov 19, 2024
00d922d
odoo_repository_migration: add tests on 'migration_scan' flag
sebalix Nov 19, 2024
2d0f6d2
odoo_repository: align tests with last version of oca-port
sebalix Nov 19, 2024
afdeefa
odoo_repository: do not create dependencies and versions from install…
sebalix Nov 21, 2024
b95009a
MigrationScanner: fix TypeError
sebalix Nov 21, 2024
ba1eeee
odoo_repository_migration: fix migration data computation
sebalix Dec 9, 2024
caea5b4
odoo_repository: add new OCA logistics repositories
sebalix Mar 7, 2025
07f06da
BaseScanner: improve helper methods to work on other remotes than 'or…
sebalix Mar 13, 2025
21c3c9a
odoo_repository_migration: support migration scan between two reposit…
sebalix Mar 13, 2025
a82f9a5
MigrationScanner: support module renaming
sebalix Apr 11, 2025
62ba51d
odoo_repository: give write access on module branch for managers
sebalix Apr 11, 2025
3be9f79
odoo_repository: add new OCA stock-logistics-putaway repository
sebalix May 6, 2025
30afc2c
odoo_repository: new field '<odoo.module.branch>.full_path'
sebalix May 28, 2025
0abbcaf
odoo_repository: add new OCA shopfloor-app repository
sebalix Jun 3, 2025
36b0e66
odoo_repository: add new OCA bank-payment-alternative repository
hparfr Jun 20, 2025
12f21a3
[FIX] odoo-addons-analyzer: ignore symlinks
sebalix Jun 24, 2025
ab39e55
odoo_repository: scan multiple branches of a repository
sebalix May 28, 2025
b8f0d31
fixup! odoo_repository: scan multiple branches of a specific (project…
sebalix Jul 7, 2025
c7434da
BaseScanner: fix '_get_module_paths' method if tree path we are looki…
sebalix Jul 7, 2025
10e83b6
odoo_repository: add new OCA sale-blanket repository
sebalix Jul 8, 2025
f346f9f
odoo_repository: fix '_find' method if no repository
sebalix Jul 8, 2025
2c8b3bc
[FIX] odoo-addons-analyzer: skip file in case of parsing error
sebalix Aug 28, 2025
74382ae
[FIX] odoo_repository: remove all specific modules when removing spec…
sebalix Sep 12, 2025
310293c
[IMP] odoo_repository: add a pivot view for 'Modules' menu entry
sebalix Sep 12, 2025
4af668d
[IMP] odoo_repository: add a graph view in a 'Module Analysis' report…
sebalix Sep 12, 2025
9acad93
odoo_repository: add '<odoo.branch>.next_id' field
sebalix Sep 14, 2025
bb4914a
odoo_repository: add '<odoo.module.branch>.branch_sequence' field
sebalix Sep 14, 2025
ecb4e54
odoo_repository: add a root menu 'Data' to host all collected generic…
sebalix Sep 14, 2025
527a459
Add 'odoo_project_changelog' module
sebalix Jun 7, 2024
069b682
[IMP] odoo_repository: switch to 'odoo-addons-parser' package
sebalix Oct 23, 2025
10e4db3
[UPD] README.rst
OCA-git-bot Dec 3, 2025
caf6647
[FIX] odoo_repository: add 'base' dependency by default on scanned mo…
sebalix Dec 8, 2025
0744e0e
[UPD] README.rst
OCA-git-bot Dec 8, 2025
da8898d
[IMP] odoo_repository: update README
sebalix Dec 3, 2025
dd00c68
[UPD] README.rst
OCA-git-bot Dec 8, 2025
dc11007
[FIX] odoo_repository_migration: trigger a fetch if module not found …
sebalix Dec 8, 2025
39b5ca4
[BOT] post-merge updates
OCA-git-bot Dec 8, 2025
96cf796
[FIX] odoo_repository: put repository fields readonly when some modul…
sebalix Dec 10, 2025
7567894
[BOT] post-merge updates
OCA-git-bot Dec 10, 2025
99eb32a
[FIX] odoo_repository: prevent duplicated module versions
sebalix Dec 10, 2025
bb4d0c1
[BOT] post-merge updates
OCA-git-bot Dec 10, 2025
1f54800
[FIX] odoo_repository: followup, add 'base' dependency by default on …
sebalix Jan 9, 2026
604fdba
[BOT] post-merge updates
OCA-git-bot Jan 11, 2026
cecf35b
Update all modules manifest and README with new repo info
sebalix Jan 17, 2026
cac6070
[BOT] post-merge updates
OCA-git-bot Jan 17, 2026
b18b9ba
[IMP] odoo_repository: pre-commit auto fixes
sebalix Feb 1, 2026
c190c64
[IMP] odoo_repository: pre-commit fixes
sebalix Feb 1, 2026
4c04dbb
[MIG] odoo_repository: Migration to 18.0
sebalix Feb 1, 2026
419db2e
[FIX] odoo_repository: remove dangling 'git' process when running tests
sebalix Feb 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 90 additions & 0 deletions odoo_repository/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

======================
Odoo Repositories Data
======================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:f4c98a6da3a2dd638fb292cbbae95681079c337555ced17cd560dd565e89dd17
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/license-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%2Fmodule--composition--analysis-lightgray.png?logo=github
:target: https://github.com/OCA/module-composition-analysis/tree/16.0/odoo_repository
:alt: OCA/module-composition-analysis
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/module-composition-analysis-16-0/module-composition-analysis-16-0-odoo_repository
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/module-composition-analysis&target_branch=16.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

Base module to host data collected from Odoo repositories.

It allows you to:

- declare the Odoo versions (last 3 versions by default)
- declare repositories containing modules (Odoo and OCA repositories
included by default)
- scan these repositories to collect modules informations per Odoo
version

**Table of contents**

.. contents::
:local:

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/module-composition-analysis/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
`feedback <https://github.com/OCA/module-composition-analysis/issues/new?body=module:%20odoo_repository%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

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

Credits
=======

Authors
-------

* Camptocamp

Contributors
------------

- Camptocamp

- Sébastien Alix <seb@usr-src.org>

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/module-composition-analysis <https://github.com/OCA/module-composition-analysis/tree/16.0/odoo_repository>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions odoo_repository/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import models
from . import controllers
58 changes: 58 additions & 0 deletions odoo_repository/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Copyright 2023 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
{
"name": "Odoo Repositories Data",
"summary": "Base module to host data collected from Odoo repositories.",
"version": "18.0.1.0.0",
"category": "Tools",
"author": "Camptocamp, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/module-composition-analysis",
"data": [
"security/res_groups.xml",
"security/ir.model.access.csv",
"data/ir_cron.xml",
"data/odoo_module.xml",
"data/odoo_repository_org.xml",
"data/odoo_repository_addons_path.xml",
"data/odoo_repository.xml",
"data/odoo.repository.csv",
"data/odoo_branch.xml",
"data/queue_job.xml",
"views/menu.xml",
"views/authentication_token.xml",
"views/ssh_key.xml",
"views/odoo_author.xml",
"views/odoo_branch.xml",
"views/odoo_license.xml",
"views/odoo_maintainer.xml",
"views/odoo_module.xml",
"views/odoo_module_branch.xml",
"views/odoo_module_category.xml",
"views/odoo_module_dev_status.xml",
"views/odoo_python_dependency.xml",
"views/odoo_repository.xml",
"views/odoo_repository_addons_path.xml",
"views/odoo_repository_branch.xml",
"views/odoo_repository_org.xml",
"views/res_config_settings.xml",
],
"installable": True,
"application": True,
"depends": [
# core
"base_sparse_field",
# OCA/server-tools
"base_time_window",
# OCA/queue
"queue_job",
],
"external_dependencies": {
"python": [
"gitpython",
"odoo-addons-parser",
# TODO to publish
# "odoo-repository-scanner"
],
},
"license": "AGPL-3",
}
1 change: 1 addition & 0 deletions odoo_repository/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import main
32 changes: 32 additions & 0 deletions odoo_repository/controllers/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Copyright 2023 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

import json

from odoo import http


class OdooRepository(http.Controller):
@http.route("/odoo-repository/data", type="http", auth="none", csrf=False)
def index(self, orgs: str = None, repositories: str = None, branches: str = None):
"""Returns modules data as JSON.

This endpoint is used by secondary nodes that want to sync the data
collected by the main node.

Parameters are strings that can be set with multiple values separated
by commas, e.g. `branches="15.0,16.0"`.
"""
if orgs:
orgs = orgs.split(",")
if repositories:
repositories = repositories.split(",")
if branches:
branches = branches.split(",")
data = (
http.request.env["odoo.module.branch"]
.sudo()
._get_modules_data(orgs=orgs, repositories=repositories, branches=branches)
)
headers = {"Content-Type": "application/json"}
return http.request.make_response(json.dumps(data), headers)
32 changes: 32 additions & 0 deletions odoo_repository/data/ir_cron.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Camptocamp SA
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo noupdate="1">
<record model="ir.cron" id="cron_scanner">
<field name='name'>Odoo MCA - Scanner</field>
<field name='interval_number'>1</field>
<field name='interval_type'>days</field>
<field name="active" eval="False" />
<field
name="nextcall"
eval="(datetime.now() + timedelta(days=1)).strftime('%Y-%m-%d 00:00:00')"
/>
<field name="model_id" ref="odoo_repository.model_odoo_repository" />
<field name="state">code</field>
<field name="code">model.cron_scanner()</field>
</record>

<record model="ir.cron" id="cron_fetch_data">
<field name='name'>Odoo MCA - Fetch data from main node</field>
<field name='interval_number'>1</field>
<field name='interval_type'>days</field>
<field name="active" eval="False" />
<field
name="nextcall"
eval="(datetime.now() + timedelta(days=1)).strftime('%Y-%m-%d 00:00:00')"
/>
<field name="model_id" ref="odoo_repository.model_odoo_repository" />
<field name="state">code</field>
<field name="code">model.cron_fetch_data()</field>
</record>
</odoo>
Loading