Skip to Content

Development and documentation maintenance

The repository targets Odoo 18 Community. pyproject.toml owns local static-check settings; pytest.ini declares local pytest options and markers. Shared runners supply their test/coverage configuration. requirements.txt and oca_dependencies.txt list repository dependencies. Use the configured workspace interpreter and shared PMIVerse runners. Do not install dependencies merely to render documentation.

Scoped checks

From the repository root, run an affected addon's tests with a task-specific, collision-checked disposable database prefix:

/srv/pmiverse/_pmiconfig/scripts/test/run_pytest_repo.sh \
  --addons "$PWD/pmis_account_financial_report" \
  --db-prefix test_report_task_ --parallel 1 -- -q --maxfail=1

Use only task-owned synthetic targets. A prefix alone does not prove ownership; never substitute an existing application database. Add other affected addon paths to --addons when the behavior spans modules. Runner logs, JUnit, and coverage artifacts belong in the runner's timestamped output directory, not in README feature claims. Historical published badges are not fresh acceptance.

For non-writing static checks of one addon:

/srv/pmiverse/_pmiconfig/scripts/test/run_lint_addon.sh \
  --addon "$PWD/pmis_account_financial_report" --check

Inspect the actual diagnostics as well as exit status. Use the configured direct Ruff rules and IDE inspections where applicable. XML-only addons have no Python implementation statements to measure; check their loaded architecture/output rather than forcing a Python coverage percentage.

Documentation sources

Maintain README and docs/ prose directly. The marked published badge block in the root README belongs to the existing badge publisher; do not regenerate it as part of a documentation-only change. All module manuals and support guides use docs/, not a parallel doc/ tree.

For each change, follow the loaded implementation, manifest data, views/actions, security, and relevant tests. Update both English user_manual.md and Slovenian user_manual_si.md together. Translate every rule, prerequisite, warning, example, step, and result; do not replace a section with a shorter summary or change its transaction amounts. UI-label glossaries and explicitly identified English fallback screenshots are language aids, not different business procedures.

Capture screenshots from the current Odoo interface using fictional records and the documented permissions. Activate the requested language first. Keep the same scenario in both languages; do not fabricate labels or financial results. Refresh images when layouts or illustrated decisions change. Remove obsolete image references so the reader does not learn an outdated workflow.

Check local file targets, heading anchors, image readability, and RST rendering without fetching external assets. Review translated paragraphs semantically; equal heading/image counts alone do not establish translation fidelity.