-
Notifications
You must be signed in to change notification settings - Fork 116
Contributing
Contributions are welcome — bug fixes, new modules, documentation and translations. This page describes how the repository is organized and the conventions to follow so your pull request can be merged smoothly.
- Each top-level folder is a separate Odoo module (e.g.
plm,plm_engineering,plm_web_3d). -
mirror_document_server/is a standalone Flask service, not an Odoo module. -
documents/holds legacy design documents. - The development branch for this Odoo series is
19.0. Each major Odoo version has its own branch.
- Open an issue describing the bug or feature, so work isn't duplicated: https://github.com/OmniaGit/odooplm/issues
-
Fork the repo and create a topic branch off
19.0. - Clone with submodules (the 3D/DXF viewer libs are submodules):
git clone --recurse-submodules -b 19.0 https://github.com/OmniaGit/odooplm.git
The repo follows the OCA (Odoo Community Association) conventions and enforces them with pre-commit. The configured tools include:
- black — Python formatting
- isort — import ordering
-
flake8 — linting (
.flake8) -
pylint (
.pylintrc,.pylintrc-mandatory) — Odoo-aware linting - pyupgrade, autoflake — modernize / clean Python
-
prettier (
.prettierrc.yml) + eslint (.eslintrc.yml) — JS/CSS/XML assets - OCA maintainer-tools — manifest fixing, addon list maintenance
- generic hooks — trailing whitespace, end-of-file, XML validity, merge-conflict checks
pip install pre-commit
cd odooplm
pre-commit install # run automatically on each commit
pre-commit run --all-files # run on the whole repo oncePlease make sure pre-commit run --all-files is clean before opening a PR.
- Every module needs a valid
__manifest__.pywith at least:name,version(in19.0.x.y.zform),author(OmniaSolutions),website,category,license,depends,data. - Keep the
dependslist minimal and accurate. - Default
licensefor new modules is AGPL-3 unless there's a specific reason otherwise. - Place security rules under
security/, views underviews/, reports underreport/, data underdata/, and front-end assets understatic/.
Run the PLM test suites with Odoo's test tags. For example:
odoo -c odoo.conf -d <db> -i <module> --test-tags=odoo_plm,odoo_plm_web_revision,plm_automatic_weight --stop-after-initWhen developing views, auto-reload XML with:
odoo -c odoo.conf --dev=xmlPlease add or update tests for the behaviour you change, and tag them so they run under the appropriate --test-tags.
The project uses a tagged commit format:
[TAG] | Short description of the change
Where TAG is one of:
| Tag | Use for |
|---|---|
FIX |
Bug fixes |
ADD |
New features / modules |
IMP |
Improvements to existing behaviour |
MOD |
Modifications / refactors |
Example: [FIX] | plm_web_3d: correct section plane normal on STEP import
- Keep each PR focused on one change.
- Write a clear description: what changed, why, and how to test it.
- Reference the related issue.
- Ensure
pre-commitpasses and tests are green. - Target the
19.0branch.
By contributing you agree that your contributions are licensed under the same license as the module you modify (AGPL-3 for most modules, LGPL-3 for a few — check the module's __manifest__.py).
- General / commercial: info@omniasolutions.eu
- Project home: https://odooplm.omniasolutions.website/
OdooPLM — Open Source PLM/PDM for Odoo · maintained by OmniaSolutions · core plm LGPL-3, add-on modules AGPL-3 · Support: info@omniasolutions.eu
Getting started
Using OdooPLM
Help