TIP: You can type at any time to perform a new search.
Web Form Banner
web_form_banner · OCA/web
- Repository
- OCA/web · module folder · Try on Runboat
- Module version
- 1.0.0
- Category
- Web
- Folder size
- 0.27 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/web
- Last tracking update
- 2026-08-07 09:06:23
- Authors
- Odoo Community Association (OCA), Quartile
- Maintainers
- Odoo Community Association (OCA), Quartile
- Committers
- Aungkokolin1997, Weblate, OCA-git-bot, oca-ci
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
The module adds configurable banners for backend **form** views. Define rules per model (and optionally per view) to show context-aware alerts with a chosen severity (info/warning/danger). Messages can be plain text with \${placeholders} or fully custom HTML; visibility, severity, and values are computed server-side via a safe Python expression. Banners are injected just before or after a target node (default: //sheet) and refresh on form load/save/reload.
Code Analysis ⓘ
Views touched (3)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_web_form_banner_rule_form |
web.form.banner.rule.form | web.form.banner.rule | form | New |
view_web_form_banner_rule_search |
web.form.banner.rule.search | web.form.banner.rule | search | New |
view_web_form_banner_rule_tree |
web.form.banner.rule.tree | web.form.banner.rule | list | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (2)
New fields (0)
No new fields.
Public methods (1)-
get_view(self, view_id=None, view_type='form', **options)@api.model
New fields (13)
-
activeBooleandefault=True -
messageTexthelp='Template with ${placeholders}. If not HTML, it will be escaped.'translate=True -
message_is_htmlBooleanhelp="If checked, 'message' is treated as raw HTML (no escaping). If not checked, the rendered text is escaped and newlines become <br/>." args: 'HTML' -
message_value_codeTexthelp='Python expression evaluated server-side. Must return a dict.\nKeys: visible(bool, default True), severity(str), values(dict for ${...} in \nmessage), and/or html(str) to override template rendering.' -
model_idMany2one → ir.modelondelete='cascade'required=True args: 'ir.model' -
model_nameCharreadonly=Truerelated='model_id.model'store=Truestring='Model Name' -
nameCharrequired=True -
positionSelectiondefault='before'help='Where to insert the placeholder relative to the first matched node.'required=True args: [('before', 'Before target'), ('after', 'After target')] -
sequenceIntegerdefault=10 -
severitySelectiondefault='danger'help='Default severity level, can be overridden per-record.'required=Truestring='Default Severity' args: [('info', 'Info'), ('warning', 'Warning'), ('danger', 'Danger')] -
target_xpathChardefault='//sheet'help='XPath of the node to insert the banner.' args: 'Target XPath' -
trigger_field_idsMany2many → ir.model.fieldsdomain="[('model', '=', model_name)]"help='If set, the banner recomputes live when any of these fields change.'string='Trigger Fields' args: 'ir.model.fields', 'web_form_banner_rule_trigger_field_rel' -
view_idsMany2many → ir.ui.viewdomain="[('type', '=', 'form'), ('model', '=', model_name)]"help='Form view where the banner should be injected.'string='Views' args: 'ir.ui.view'
-
compute_message(self, rule_id, model, res_id, form_vals=None)@api.modelReturn {visible, severity, html} for the given rule and record.
Loading…
Loading…
- Status
- Open migration PR — not merged yet for this version
- CI status
- checks failing
- Open since
- 338 days ago
- Last activity
- 51 days ago
- Repository
- OCA/web
- Pull request
- [15.0][MIG] web_form_banner: Migration to 15.0 (#3287)
- Status
- Open migration PR — not merged yet for this version
- CI status
- checks failing
- Open since
- 317 days ago
- Last activity
- 51 days ago
- Repository
- OCA/web
- Pull request
- [17.0][MIG] web_form_banner: Migration to 17.0 (#3305)