dn_queue_screen is an Odoo 19 queue-management and public-display module for
general service desks, clinics, hospitals, and similar organizations. Each
channel has an independent queue, display configuration, responsible operators,
and revocable public URL.
- Token-protected public display with no backend login requirement.
- Real-time call, recall, skip, done, cancel, and reset events over Odoo Bus.
- Concurrency-safe automatic queue numbers maintained independently per channel.
- One-click, concurrency-safe calling of the oldest waiting entry.
- Server-backed display restoration after refresh or bus reconnection.
- Responsive and accessible display for televisions, tablets, and small screens.
- Optional room/counter numbers and configurable display colors.
- Browser-compatible notification sound enabled by one user gesture.
- Multi-company and responsible-operator isolation.
- Separate Operator and Administrator privileges.
- Python HTTP/model tests and frontend HOOT unit tests.
The canonical lifecycle and security behavior are documented in Queue Screen Workflow.
The optional Point of Sale integration is documented in Point of Sale Queue Integration.
Clinic check-in, consultation, routing, and optional appointments are documented in Clinic Queue Integration.
- Odoo 19.0
- The standard Odoo
busaddon - A browser with JavaScript enabled for the public display
No external Python package is required by the module at runtime.
-
Clone the repository into a directory included in Odoo's
addons_path:git clone https://github.com/dimastriann/odoo-queue-screen.git
-
Restart Odoo, update the Apps list, and install Queue Screen Display.
-
For an existing installation, upgrade
dn_queue_screenafter deploying a newer version so its security records and views are updated.
Install Queue Screen - Point of Sale (dn_queue_screen_pos) as well when
paid POS orders should create collection tickets. It installs the base queue
module and Point of Sale dependencies automatically.
Install Queue Screen - Clinic (dn_queue_screen_clinic) for patient-flow
queues. Install Queue Screen - Clinic Appointments
(dn_queue_screen_clinic_calendar) only when Odoo Calendar appointments should
support check-in; the base clinic addon does not depend on Calendar.
Assign privileges from the user's Access Rights page:
- Queue Screen / Operator can view assigned channels, create queue entries, and use their lifecycle actions. Operators cannot configure channels or delete queue entries.
- Queue Screen / Administrator can configure and operate all channels in the user's allowed companies, clear queues, and revoke public screen links.
The built-in Administrator users receive the Queue Screen Administrator role when the module is installed.
- Open Queue Screen > Configuration > Queue Channels.
- Create a channel and select its company and responsible operators.
- Configure its number prefix, padding, history limit, optional counter field, and display colors.
- Select Open Screen to launch its token-protected public display.
Treat the screen URL like a secret. Use Revoke Screen Link if it is exposed; the old URL immediately stops working.
- Open Queue Screen > Operations > Queue Operations.
- Create a queue entry for one of your assigned channels. Its next queue number is assigned automatically by the server.
- Use Call Next on the channel to call the oldest waiting entry, or use Call, Skip, Done, and Cancel on individual entries. Calling an active or skipped entry performs a recall.
- On each newly opened display, select Enable sound once. Browsers require this user gesture before notification audio is permitted.
The display reconnects to Odoo Bus automatically and reloads authoritative queue state after a connection interruption.
- Public routes validate the channel ID, active status, and full access token.
- Display routes use read-only serialized data and never grant ORM access.
- Authenticated records are restricted by allowed company and channel responsibility.
- Lifecycle state and timestamps cannot be changed using generic ORM writes.
Use a dedicated test database and an unused localhost HTTP port. The localhost
override ensures Odoo HttpCase requests reach the same test process even when
the development configuration binds to another hostname.
python odoo-bin -c path/to/odoo.conf -d queue_screen_test `
-i dn_queue_screen --http-interface=127.0.0.1 --http-port=18019 `
--test-enable --stop-after-init --test-tags /dn_queue_screenRun the module's frontend tests after installation:
python odoo-bin -c path/to/odoo.conf -d queue_screen_test `
--http-interface=127.0.0.1 --http-port=18019 `
--test-enable --stop-after-init `
--test-tags="/web:WebSuite.test_unit_desktop[@dn_queue_screen]"The frontend runner requires Chrome/Chromium and Odoo's test-only WebSocket client dependency. Runtime deployments do not require them.
LGPL-3