OCA Maintainers Tools
$ git clone firstname.lastname@example.org:OCA/maintainers-tools.git $ cd maintainers-tools $ virtualenv env $ . env/bin/activate $ python setup.py install
OCA repositories tools
These tools are mostly for maintenance purpose only. They are used by OCA maintainers to address common operations across all repos.
Get a token from Github.
$ oca-github-login USERNAME
NOTE: you may have to delete the existing one from "Account settings -> Developer Settings -> Personal Access Tokens".
Sync team users from community.odoo.com to GitHub teams
Goal: members of the teams should never be added directly on GitHub. They should be added on https://community.odoo.com. This script will sync all the teams from Odoo to GitHub.
- Your odoo user must have read access to the projects and users;
- The partners on odoo must have their GitHub login set otherwise they won't be added in the GitHub teams;
- Your GitHub user must have owners rights on the OCA organization to be able to add or remove members;
- The odoo project must have the same name than the GitHub teams.
Run the script in "dry-run" mode:
$ oca-copy-maintainers --dry-run
Apply the changes on GitHub:
The first time it runs, it will ask your odoo's username and password.
You may store them using the
--store option, but watch out: the password is stored in clear text.
Set labels on OCA repository on GitHub
Set standardized labels to ease the issue workflow on all repositories with same colors. This tools will also warn you what are the specific labels on some repository
Clone all OCA repositories
oca-clone-everything can be used to clone all the OCA projects:
create a fresh directory, use oca-github-login (or copy oca.cfg from a place
where you've already logged in) and run oca-clone-everything.
The script will create a clone for all the OCA projects registered on
github. For projects already cloned, it run
git fetch --all to get the
If you pass the
--organization-remotes <comma-separated-list> option, the script will also add remotes for the listed
accounts, and run
git fetch to get the source code from these forks. For instance:
$ oca-clone-everything --organization-remotes yourlogin,otherlogin
will create two remotes, in addition to the default
otherlogin, respectively referencing
email@example.com:otherlogin/projectname and fetch these remotes, for all the
OCA projects. It does not matter whether the forks exist on github or not, and
you can create them later.
These tools are meant to be used both by repo maintainers and contributors. You can leverage them to give more quality to your modules and to respect OCA guidelines.
To provide high quality README for our modules we generate them automatically.
The sections of the final README are organized in fragments.
They must be put inside a
readme folder respecting [this structure|./readme].
To generate the final README for the module
$ oca-gen-addon-readme --repo-name=server-auth --branch=10.0 --addon-dir=auth_keycloak
The result will be a fully PyPI compliant README.rst in the root of your module.
You may also use this script for your own repositories by specifying this
Auto fix pep8 guidelines
To auto fix pep8 guidelines of your code you can run:
$ oca-autopep8 -ri PATH
This script overwrite with monkey patch the original script of autopep8 to support custom code refactoring.
List of errors added:
CW0001Class name with snake_case style found, should use CamelCase.
CW0002Delete vim comment.
More info of original autopep8 here
You can rename snake_case to CamelCase with next command:
$ oca-autopep8 -ri --select=CW0001 PATH
You can delete vim comment
$ oca-autopep8 -ri --select=CW0002,W391 PATH
As a developer, you want to launch the scripts without installing the egg.
$ git clone firstname.lastname@example.org:OCA/maintainers-tools.git $ cd maintainers-tools $ virtualenv env $ . env/bin/activate $ pip install -e .
$ tox # all tests for all python versions $ tox -e py27 # python 2.7 $ tox -- -k readme -v # run tests containing 'readme' in their name, verbose
Get a token from Github
$ python -m tools.github_login USERNAME
Run a script
$ python -m tools.copy_maintainers
You can use the
GITHUB_TOKEN environment variable to specify the token
$ GITHUB_TOKEN=xxx python -m tools.copy_maintainers