Skip to main content

TUI tool named odoo-activity (inspired by pg_activity)

Project description

odoo-activity

A terminal UI for local Odoo instances. One screen: host cpu/mem/uptime, every Odoo instance (systemd --user or supervisor) with its databases nested underneath, and a detail pane for process/log/db inspection.

Installation

uv tool install odoo-activity

Usage

odoo-activity  # or: oa

Assumes Odoo instances run under systemd --user and/or supervisor (both are discovered and merged), and that the odoo-db CLI is on PATH for the database category tabs. The Config tab additionally needs odoo-config and odoo-addons-path on PATH.

Key Action
/ move through instances and their nested dbs
s / r start/stop toggle / restart (confirm popup)
[ / ] switch tab in the detail pane
p / l / c Processes / Logs / Config
u / l / j / c Users / Locks / Jobs / Crons
K kill -9 the selected process (Processes tab, confirm popup)
L kill -3 the selected process, then jump to Logs (Processes tab)
e cycle compact/explain/expand/clean (Config tab)
/ search (Logs and Config tabs)
q quit

Config tab modes

e cycles the Config tab through odoo-config's compact/explain/ expand/clean views of the highlighted instance's config file — see odoo-config's CLI docs for what each one shows.

ODOO_ACTIVITY_DB_ROLE overrides the postgres role used to resolve an instance's databases (default: the instance's db_user, falling back to its name).

Architecture

odoo_activity/
├── probes.py         # all system data: no Textual import
├── panes/detail.py   # ActivityPane: the one stateful rendering widget
└── tui.py            # app shell: layout, list, timers, actions
  • probes.py — pure functions, no UI. Every systemctl/supervisorctl/ ps/psql call and /proc read lives here, returning plain dicts/lists so it's testable without spinning up a screen. An instance's databases, logfile and processes all resolve from one config: its <workdir>/config/{odoo.conf,server.conf}.
  • panes/detail.pyActivityPane, the one stateful render widget: a tab strip over a Log/DataTable, mode-switched by whatever's highlighted (see Modes below) — not a separate popup screen.
  • tui.py — the shell only: compose() layout, the nested instances+dbs ListView, focus/highlight wiring, refresh timers, start/stop/restart + ConfirmScreen. Delegates rendering to ActivityPane, data to probes.py.

Modes

ActivityPane mode-switches on whatever's highlighted in the instances list:

  • Instance mode — an instance row is highlighted. Tabs: Processes, Logs, Config.
  • Database mode — one of its nested database rows is highlighted. Tabs: Users, Locks, Jobs, Crons, Modules, Stats.

Both modes share the same tab strip and Log/DataTable widgets (just a _mode flag), and several letter-key shortcuts are reused across them for whichever tab they map to in each (e.g. l is Logs in instance mode, Locks in database mode).

Data sources

  • Instancessystemctl --user list-units and supervisorctl status, merged by name.
  • Databases — each instance's <workdir>/config/{odoo.conf,server.conf} gives a db role (or ODOO_ACTIVITY_DB_ROLE); psql lists the databases owned by that role.
  • Processes — the manager gives the instance's master pid (systemctl ... -p MainPID / supervisorctl pid); ps -eo pid,ppid,user,%mem,args is then walked down the ppid tree from there to find every worker.
  • Logs — the same config gives logfile, tailed by reading backward in fixed-size chunks from the end so a multi-GB file costs a few reads, not a full scan.
  • Config — read-only: odoo-config {compact,explain,expand,clean} is run against the instance's config file and its plain-text stdout is shown as-is; the version passed to it comes from odoo-addons-path <workdir> --verbose --format json's version key.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

odoo_activity-0.2.0.tar.gz (36.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

odoo_activity-0.2.0-py3-none-any.whl (36.9 kB view details)

Uploaded Python 3

File details

Details for the file odoo_activity-0.2.0.tar.gz.

File metadata

  • Download URL: odoo_activity-0.2.0.tar.gz
  • Upload date:
  • Size: 36.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for odoo_activity-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3a06a16fb6d2e9c95a501eeefbb3d3c8cb9b88ecfe17fdb4b4c96ea9ef46214f
MD5 2da8f747db60e48019e754585d65b42d
BLAKE2b-256 d11af1e8b99f0148435aea3e19f5fd150b6fa0eb4479c189d5c05f796c876cb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for odoo_activity-0.2.0.tar.gz:

Publisher: release.yaml on trobz/odoo-activity

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file odoo_activity-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: odoo_activity-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 36.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for odoo_activity-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 54ab1bbf7c33ea605d775aa420381a533834f4b9e0609cf7ece7114d1e2138e2
MD5 e66a39847d7e199ae4044217cb0235af
BLAKE2b-256 dccfcadf55773261f751f62b9a8de1c39c5b77b3277eb34ab4d6f05037ff0828

See more details on using hashes here.

Provenance

The following attestation bundles were made for odoo_activity-0.2.0-py3-none-any.whl:

Publisher: release.yaml on trobz/odoo-activity

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page