project_state_selection
The green, orange and red status bubble on an Odoo project is project_state_selection. It swaps the generic state colors for the five-color project palette, and quietly removes one status from the dropdown.
| Technical name | project_state_selection |
|---|---|
| Field types | selection |
| Views | list, kanban |
| Also registered as | kanban.project_state_selection (16 only) |
| Module | project |
| Used in core | 2 occurrences across 1 module: the project list and kanban views in project |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | No. Applied in XML; Studio does not list it |
| Alternatives | state_selection, status_with_color, project_task_state_selection |
What the Project status widget does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
autosave | boolean | Inherited from state_selection since 17. Picking a status saves the whole record immediately, pending edits included, unless you pass {'autosave': False}. In 16 the option was never read because the widget registered without a descriptor.(default: true)(since Odoo 17.0) |
hide_label | boolean | Inherited from state_selection since 17. The label only renders when you explicitly pass {'hide_label': False}; by default the widget is a bare colored bubble, which is how core uses it in the 20px list column.(default: true (label hidden))(since Odoo 17.0) |
The bubble hides its label by default. The inherited extractProps shows the status text only when you pass {'hide_label': False}. Core's list view instead titles the column Status and keeps the cell as a bare 20px bubble via nolabel and a width hint.
Working examples
Registration history and the shared palette
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. File byte-identical on the development branch; see below. |
| Odoo 19.0 | Verified | Verified against the shipped source; adds only a small disabled-button style file. |
| Odoo 18.0 | Verified | Same source. No XML changes needed. |
| Odoo 17.0 | Verified | Bare-name registration and descriptor introduced; options work from here. |
| Odoo 16.0 | Partial / changed | Registered only as kanban.project_state_selection, class-only; unusable outside kanban and options ignored. |
Upgrade note. Views written for 17, 18 or 19 carry over untouched. Views coming from 16 need review: outside kanban the widget name silently did nothing there, so a migrated list view may start showing bubbles where it previously showed a plain selection.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| To Define is missing from the dropdown | The widget's options getter filters the to_define value out on purpose. Working as designed; set the value from server code or an import if you truly need to reset it. |
| In Odoo 16 the widget does nothing in list or form views | 16 registered it only under the kanban. prefix, so other views fell back to the plain selection. Upgrade to 17+ where the bare name exists, or accept kanban-only behavior on 16. |
| Status bubble has no color for a custom selection value | The palette maps only on_track, at_risk, off_track, on_hold and done to bubble numbers. Extend STATUS_COLORS in a JS patch if you add custom statuses; unknown values render the neutral bubble. |
| Clicking a status saves the record before other edits are done | Inherited autosave defaults to true and saves the entire record. Pass options="{'autosave': False}" where the status change should stay pending. |
| Kanban card shows a bubble that is not clickable | Core renders a static span with last_update_color when the kanban is not editable. Expected; the live widget only appears for editable cards with a status set. |
Project status widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
project_state_selection | The five-status health rating on project.project in lists and kanbans | Project color palette on numbered bubbles, with To Define removed from the dropdown |
| state_selection | Generic three-state kanban_state flags on any model | Red and green only, keeps every selection value in its dropdown |
| status_with_color | Showing a recorded project update's status | Same palette but attribute-driven and display-oriented, with its own hide options |
| project_task_state_selection | Task-level states with approval and canceled values | Different vocabulary and icon set, aimed at tasks rather than project health |
Frequently asked questions
What is the project_state_selection widget in Odoo?+
Why can't I set a project back to To Define?+
Which colors map to which project status?+
Can I use project_state_selection on my own model?+
Why did the widget not work in my Odoo 16 list view?+
Project statuses your steering meetings can trust?
We implement Odoo project portfolios with health statuses wired to updates, automated escalation when a project goes Off Track, and list views your PMO reads in one glance, across Odoo 16 to 19.
Plan your project setup