Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Odood Directory Structure

Odood directory structure is similar to that one for odoo-helper-scripts, so most users of odoo-helper-scripts will not notice that changes.

Odood project root directory contains following folders:

  • backups - directory for backups generated by odood db backup command
  • conf - directory for configurations used by this odood project. Usually contains two files: one for normal local config and one that is used to run tests
    • odoo.conf - main configuration used by default
    • odoo.test.conf - configuration used to run tests, usually has a different port than odoo.conf, and does not specify a logfile, so all log messages are written to stderr and caught by the odood test runner
  • custom_addons - directory for all addons that are not part of Odoo. Contains only symlinks to actual addon directories — see below.
  • data - Odoo data directory used to store files and sessions
  • downloads - directory containing addons downloaded directly from Odoo Apps
  • odoo - Odoo source code
  • repositories - stores git repositories containing additional (non-standard) Odoo addons
  • venv - virtualenv directory
  • odood.yml - configuration for this Odood project

Optional directories:

  • assembly - if the project is configured to use assembly, this directory contains the assembly repository
  • cache - various caches; for example, git sources defined in an assembly spec are cloned here and reused for subsequent sync operations

How addon paths work

Odoo locates installable addons through the addons_path setting in odoo.conf. Odood configures this path to point at custom_addons/, which acts as a flat namespace of all third-party addons available to Odoo.

custom_addons/ itself contains only symlinks, never actual addon code. The real addon code lives in repositories/<owner>/<repo>/ (for git repos) or downloads/ (for addons from Odoo Apps).

When you run odood repo add <url>, Odood:

  1. Clones the repository into repositories/<owner>/<repo>/
  2. Scans it for installable addons (directories with a valid __manifest__.py)
  3. Creates a symlink in custom_addons/<addon_name> → the addon directory

This design keeps the addon namespace flat (Odoo doesn’t need to traverse nested directories) while keeping the source repos isolated and easy to update with git pull.

If the symlinks ever get out of sync — for example after manually editing a repo or changing which addons it exposes — run:

odood addons link .

This rebuilds all symlinks in custom_addons/ to match the current state of all repositories.