Connect modules connect_book

Platform

Connect Book

Read the Connect documentation inside Odoo.

Reads the Markdown documentation that ships inside every installed connect* module — the same files the documentation site is built from — and assembles it into two books inside the Odoo UI: the User Guide and the admin-only Admin Guide. A two-pane window: modules and their pages on the left, the rendered page on the right.

The docs live next to the module code, so what you read always matches what you run. Install a provider and its pages appear; uninstall it and they go. No separate wiki, nothing to keep in sync by hand, and no documentation about features this database does not have.

The split between the two books is a real permission, not a convenience. The menus are gated on the Connect groups, the model re-checks the group on every call, and an unclassified page defaults to the narrower administrator audience so a page never reaches more people because someone forgot to file it. Rendered pages and parsed mkdocs.yml files are cached per worker and keyed by modification time, so a redeploy needs no cache flush.

What it offers

  • Docs assembled from installed modules

    The Book crawls every module whose name starts with connect and whose state is installed, reads its mkdocs.yml for the section title and page order, and renders the Markdown from its docs/ folder. It is the same source the documentation site is built from, with no export step and no second copy.

  • Two books, split by audience

    Connect > Documentation > User Guide opens to anyone with connect.group_user; the Admin Guide menu is hidden from everyone but connect.group_admin. The audience of a page comes from an explicit User Guide or Admin Guide section in the module's nav, otherwise from the docs/user/ or docs/admin/ path prefix, otherwise it defaults to administrator.

  • Markdown rendered without a dependency

    Headings, nested lists, fenced code, blockquotes, tables and inline formatting are rendered by the module itself, so it runs in any Odoo image. It also handles the two MkDocs constructs the docs use: admonitions (!!! note, info, tip, warning, danger, example) and content tabs (=== "Label"), which the Book stacks as labelled panels.

  • Cross-references stay inside Odoo

    A link written the way MkDocs expects, such as [Security](security.md), jumps to that page in the right-hand pane instead of opening a browser tab or losing your place in Odoo. A link that resolves outside the module's docs/ folder, or to a page your book does not hold, is rendered inert; external addresses open in a new tab.

  • Filter the table of contents

    The search box above the contents narrows the tree case-insensitively: a module whose name matches keeps all of its pages, otherwise only pages whose title matches survive and empty modules drop out. It filters titles, not page text.

  • Per-page translation fallback

    A translated page lives at docs/i18n/<lang>/ mirroring the source tree, and the Book prefers the one matching the reader's Odoo language. The choice is made page by page, so a partly translated module serves its translated pages translated and the rest in English.

Scope of the current version

  • There is no configuration and no settings page. connect.book is an abstract model, stores nothing, and has no table to grant access rules on.
  • Only installed connect* modules contribute pages. A module present on disk but not installed on this database shows nothing.
  • A module must ship mkdocs.yml with a site_name and a nav, plus the pages that nav lists, or it does not appear in either book.
  • The search box does not search inside page text; use the browser's own find for that.
  • A Markdown file larger than 1 MB, or one that fails to render, is skipped with a server-log warning rather than truncated, so a single bad file never takes the book down.
  • Edited pages appear on the next read without a restart, but a module new to the database still needs the usual Odoo module upgrade first.

Installs with full features free for 30 days; buy the license inside the module.