Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
4c38c19
[ADD] vcp
etobella Jan 24, 2026
a3bf522
[ADD] vcp_github
etobella Jan 24, 2026
210cf91
[FIX] vcp: set kind field required at platform level. It doesn't make…
legalsylvain Jan 24, 2026
08481b4
[FIX] vcp_github: handle correctly the error, if no API Keys are defined
legalsylvain Jan 24, 2026
553b821
[IMP] vcp: remove dependancy on website
etobella Jan 25, 2026
60fde30
[ADD] vcp_website
etobella Jan 25, 2026
87acd02
[IMP] vcp: Create users and Organizations
etobella Jan 26, 2026
3a26fad
[FIX] vcp_github: use users and partners
etobella Jan 26, 2026
d91d863
[IMP] vcp_website: use users and organizations
etobella Jan 26, 2026
858ecde
[IMP] vcp: Remove portal dependancy
etobella Jan 26, 2026
2778fde
[ADD] vcp_portal
etobella Jan 26, 2026
85e1e5e
[MOV] vcp --> vcp_management
etobella Feb 20, 2026
d5d2455
[FIX] vcp_github: Fix rename from vcp.platform.type to vcp.host
etobella Feb 20, 2026
9cd928f
[FIX] vcp_portal: Fix rename from vcp.platform type to vcp.host
etobella Feb 20, 2026
cc90e94
[FIX] vcp_website: Fix rename from vcp.platform.type to vcp.host
etobella Feb 20, 2026
442d5ae
[IMP] vcp_management: Improve comments
etobella Feb 20, 2026
5cfc04d
[IMP] vcp_management: Add Host Type
etobella Feb 20, 2026
cf44f35
[IMP] vcp_portal: Adapt to Host Type
etobella Feb 20, 2026
6451eb4
[IMP] vcp_github: Adapt to Host Type
etobella Feb 20, 2026
10e7f58
[IMP] vcp_management: Add groups
etobella Feb 20, 2026
c9ebe93
[IMP] vcp_portal: Add groups
etobella Feb 20, 2026
7b8e419
[IMP] vcp_management: Handle importing by cron
etobella Feb 20, 2026
b0cb218
[IMP] vcp_github: Fix tests
etobella Feb 20, 2026
f2038aa
[IMP] vcp_management: add git url
etobella Feb 20, 2026
7842924
[IMP] vcp_github: add git url
etobella Feb 20, 2026
baea4a2
[IMP] vcp_management: Add rules & cloc review
etobella Feb 23, 2026
e9b4921
[IMP] vcp_github: Adapt tests and code to get data
etobella Feb 23, 2026
6ca55e1
[FIX] vcp_management: Add dependancies
etobella Feb 23, 2026
b8b2fbd
[FIX] vcp_management: Order of file loading
etobella Feb 23, 2026
15e357c
[IMP] vcp_management: Adding tests
etobella Feb 23, 2026
0c5f3ca
[FIX] vcp_management: Copy with depth 1
etobella Feb 23, 2026
abfc40b
[ADD] vcp_odoo: import odoo modules
etobella Feb 23, 2026
20b27bf
[FIX] vcp_management: Set default values, fix views
etobella Feb 23, 2026
59cd936
[IMP] vcp_odoo: add more fields
etobella Feb 23, 2026
91a0a1c
[IMP] vcp_management: better message, if folder is bad / not configured
legalsylvain Feb 24, 2026
7135aed
[IMP] vcp_odoo: remove warnings
etobella Feb 24, 2026
67418d1
[IMP] vcp_management: Pass rule information to a generic module and d…
etobella Feb 25, 2026
6f50b28
[IMP] vcp_odoo: adapt to mixin logic
etobella Feb 25, 2026
03603af
[FIX] vcp_management: bad path for icon
legalsylvain Feb 25, 2026
e91e8e1
[IMP] vcp_management: allow to delete a repository, if it has reposit…
legalsylvain Feb 25, 2026
54ddc34
[IMP] vcp_*: allow to fetch only 'sources' repositories, ignoring forks
legalsylvain Feb 25, 2026
0a05b70
[IMP] vcp_*: allow to fetch only 'active' repositories, ignoring arch…
legalsylvain Feb 25, 2026
1ef14a0
[IMP] vcp_management: allow to delete a branch, if it has repository …
legalsylvain Feb 25, 2026
e410bd7
[IMP] vcp_*: add last_commit_date (in github, it related to 'PushedAt…
legalsylvain Feb 25, 2026
d38c140
[IMP] vcp_management: Add new smart button to go from a platform to r…
legalsylvain Feb 25, 2026
2c09a8a
[FIX] vcp_github: adapt github mock to latest changes
legalsylvain Feb 25, 2026
366d394
[REF] vcp_management: put vcp.platform.key model in dedicated file, a…
legalsylvain Feb 25, 2026
f42383f
[IMP] vcp_management: use new image.mixin, simplifying code base
legalsylvain Feb 26, 2026
2d7771d
[IMP] vcp_odoo: use new image.mixin, simplifying code base
legalsylvain Feb 26, 2026
17972d2
[FIX] vcp_odoo: delete a repository branch should unlink related odoo…
legalsylvain Feb 26, 2026
ca93c6c
[IMP] vcp_odoo: Display number of versions in which the module is ava…
legalsylvain Feb 26, 2026
1a6c533
[IMP] vcp_management: add branch count on repo level
legalsylvain Feb 26, 2026
586d341
[IMP] vcp_odoo: display all the versionsw where the module is available
legalsylvain Feb 26, 2026
9d11a14
[ADD] vcp_github: demo data
legalsylvain Feb 26, 2026
4b991b4
[IMP] vcp_*: Add branch pattern, to fetch only branches whose names a…
legalsylvain Feb 26, 2026
c92e3fb
[REF] vcp_odoo: create a python file per model, following OCA convention
legalsylvain Feb 26, 2026
2733dd1
[REF] vcp_management: use new menu items nested system
legalsylvain Feb 26, 2026
2eb7c48
[IMP] vcp_management: Add vcp.branch menuitem, and improve display
legalsylvain Feb 26, 2026
bdd99e1
[IMP+FIX] vcp_comment: Add vcp.branch menuitem, and improve display. …
legalsylvain Feb 27, 2026
2faf3b4
[IMP] vcp_management: Add vcp.review menuitem, and improve display
legalsylvain Feb 27, 2026
e0e0ae3
[IMP] [ADD] vpc_odoo: entry menu item for vcp.odoo.module.version
legalsylvain Mar 1, 2026
4f577a7
[FIX] vcp_odoo: set readonly on all 'vcp.odoo.xxx' model fields
legalsylvain Mar 1, 2026
8cd5f8b
[REF] vcp_odoo: rename vcp.odoo.lib.python into vcp.odoo.python.libra…
legalsylvain Mar 1, 2026
bcaa1f6
[IMP] vcp_odoo: add two new menu entries for vcp.odoo.python.library …
legalsylvain Mar 1, 2026
82dd019
[IMP] vcp_odoo: display on python.library and bin.package form views,…
legalsylvain Mar 1, 2026
ed18c06
[IMP] Allow to unlink modules
legalsylvain Mar 1, 2026
6dbc21a
[IMP] vcp_management: Add a menu entry for the vcp.request.label mode…
legalsylvain Mar 1, 2026
fea1aff
[IMP] vcp_management: add link from vcp.request to vcp.review
legalsylvain Mar 1, 2026
9007e95
[IMP] vcp_management: add link from vcp.request to vcp.comment
legalsylvain Mar 1, 2026
3e6ed32
[IMP] vcp_*: get 'draft' state of pull requests. add a new 'status' f…
legalsylvain Mar 2, 2026
c326bc2
[IMP] vcp_management: allow to delete pull requests
legalsylvain Mar 2, 2026
4d9955e
[IMP] vcp_*: fetch html description
legalsylvain Mar 2, 2026
4d82238
[IMP] vcp_* : improve naming of field, renaming information_update in…
legalsylvain Mar 2, 2026
1f5c98a
[REF] vcp_* : harmonize actions. put a path in all actions. rename xm…
legalsylvain Mar 2, 2026
844deef
[IMP] vcp_* : improve naming of field, renaming information_update in…
legalsylvain Mar 2, 2026
a6db2f8
[IMP] vcp_* : improve naming of field, renaming branch_update into sc…
legalsylvain Mar 2, 2026
c08138f
[IMP] vcp_management: explicit limit in dron definition.
legalsylvain Mar 2, 2026
ef70e5e
[IMP] vcp_management: add a filter to display only active requests. (…
legalsylvain Mar 2, 2026
96ec974
[IMP] vpc_management: add vcp.repository.branch menu entry
legalsylvain Mar 2, 2026
c812413
[FIX] vcp_github: do not create a branch when fetching pull request, …
legalsylvain Mar 2, 2026
373b7a3
[FIX] vcp_management: tests now include parameter limit
legalsylvain Mar 2, 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
5 changes: 5 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# generated from manifests external_dependencies
GitPython
github3.py
markdown
pathspec
1 change: 1 addition & 0 deletions test-requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
odoo_test_helper
211 changes: 211 additions & 0 deletions vcp_github/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
==========
Vcp Github
==========

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

.. |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%2Fversion--control--platform-lightgray.png?logo=github
:target: https://github.com/OCA/version-control-platform/tree/18.0/vcp_github
:alt: OCA/version-control-platform
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/version-control-platform-18-0/version-control-platform-18-0-vcp_github
: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/version-control-platform&target_branch=18.0
:alt: Try me on Runboat

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

[ This file must be max 2-3 paragraphs, and is required.

The goal of this document is to explain quickly the features of this
module: “what” this module does and “what” it is for. ]

Example:

This module extends the functionality of ... to support ... and to allow
users to ...

**Table of contents**

.. contents::
:local:

Use Cases / Context
===================

[ This file is optional but strongly suggested to allow end-users to
evaluate the module's usefulness in their context. ]

BUSINESS NEED: It should explain the “why” of the module:

- what is the business requirement that generated the need to develop
this module
- in which context or use cases this module can be useful (practical
examples are welcome!).

APPROACH: It could also explain the approach to address the mentioned
need.

USEFUL INFORMATION: It can also inform on related modules:

- modules it depends on and their features
- other modules that can work well together with this one
- suggested setups where the module is useful (eg: multicompany,
multi-website)

Installation
============

[ This file must only be present if there are very specific installation
instructions, such as installing non-python dependencies. The audience
is systems administrators. ]

To install this module, you need to:

1. Do this ...

Configuration
=============

[ This file is not always required; it should explain **how to configure
the module before using it**; it is aimed at users with administration
privileges.

Please be detailed on the path to configuration (eg: do you need to
activate developer mode?), describe step by step configurations and the
use of screenshots is strongly recommended.]

To configure this module, you need to:

- Go to *App* > Menu > Menu item
- Activate boolean… > save
- …

Usage
=====

[ This file is required and contains the instructions on **“how”** to
use the module for end-users.

If the module does not have a visible impact on the user interface, just
add the following sentence:

This module does not impact the user interface.

If that’s not the case, please make sure that every usage step is
covered and remember that images speak more than words!]

To use this module, you need to:

- Go to *App* > Menu > Menu item

*insert screenshot!*

- In “Contact” form, add a value to field *xyz* > save

*insert screenshot!*

- The value of *xyz* is now displayed in the list view.

*insert screenshot!*

Known issues / Roadmap
======================

[ Enumerate known caveats and future potential improvements. It is
mostly intended for end-users, and can also help potential new
contributors discovering new features to implement. ]

- ...

Changelog
=========

[ The change log. The goal of this file is to help readers understand
changes between version. The primary audience is end users and
integrators. Purely technical changes such as code refactoring must not
be mentioned here.

This file may contain ONE level of section titles, underlined with the ~
(tilde) character. Other section markers are forbidden and will likely
break the structure of the README.rst or other documents where this
fragment is included. ]

11.0.x.y.z (YYYY-MM-DD)
-----------------------

- [BREAKING] Breaking changes come first.
(`#70 <https://github.com/OCA/repo/issues/70>`__)
- [ADD] New feature. (`#74 <https://github.com/OCA/repo/issues/74>`__)
- [FIX] Correct this. (`#71 <https://github.com/OCA/repo/issues/71>`__)

11.0.x.y.z (YYYY-MM-DD)
-----------------------

- ...

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/version-control-platform/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/version-control-platform/issues/new?body=module:%20vcp_github%0Aversion:%2018.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
-------

* Dixmit

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

- Firstname Lastname email.address@example.org (optional company website
url)
- Second Person second.person@example.org (optional company website url)

Other credits
-------------

[ This file is optional and contains additional credits, other than
authors, contributors, and maintainers. ]

The development of this module has been financially supported by:

- Company 1 name
- Company 2 name

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/version-control-platform <https://github.com/OCA/version-control-platform/tree/18.0/vcp_github>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions vcp_github/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
23 changes: 23 additions & 0 deletions vcp_github/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2026 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Vcp Github",
"summary": """Integrate Virtual Control Platform with Github""",
"version": "18.0.1.0.0",
"license": "AGPL-3",
"author": "Dixmit,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/version-control-platform",
"depends": [
"vcp_management",
],
"external_dependencies": {
"python": ["github3.py", "markdown"],
},
"data": [
"data/data.xml",
],
"demo": [
"demo/demo_vcp_platform.xml",
],
}
11 changes: 11 additions & 0 deletions vcp_github/data/data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo noupdate="1">
<record id="vcp_github_host_type" model="vcp.host.type">
<field name="name">GitHub</field>
<field name="code">github</field>
</record>
<record id="vcp_github_host" model="vcp.host">
<field name="name">GitHub</field>
<field name="type_id" ref="vcp_github_host_type" />
</record>
</odoo>
9 changes: 9 additions & 0 deletions vcp_github/demo/demo_vcp_platform.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="vcp_platform_oca_github" model="vcp.platform">
<field name="name">OCA</field>
<field name="host_id" ref="vcp_github_host" />
<field name="fetch_repository_branch_pattern">^\d+\.\d+$</field>
<field name="scheduled_information_update" eval="False" />
</record>
</odoo>
5 changes: 5 additions & 0 deletions vcp_github/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from . import vcp_host
from . import vcp_platform
from . import vcp_repository
from . import vcp_user
from . import vcp_organization
19 changes: 19 additions & 0 deletions vcp_github/models/vcp_host.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2026 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import _, api, models
from odoo.exceptions import ValidationError


class VcpHost(models.Model):
_inherit = "vcp.host"

@api.constrains("type_id")
def _check_kind_github(self):
for record in self.filtered(lambda r: r.type_id.code == "github"):
platforms = self.search(
[("id", "!=", record.id), ("type_id.code", "=", "github")],
limit=1,
)
if platforms:
raise ValidationError(_("Only one GitHub Host type is allowed."))
15 changes: 15 additions & 0 deletions vcp_github/models/vcp_organization.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright 2026 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).


from odoo import models


class VcpOrganization(models.Model):
_inherit = "vcp.organization"

def _get_contributor_url(self):
result = super()._get_contributor_url()
if not result and self.host_id.type_id.code == "github":
return f"https://github.com/{self.external_id}"
return result
Loading