Skip to content

Commit 9de2fb4

Browse files
[IMP] web_form_banner: black, isort, prettier
1 parent fc0f33c commit 9de2fb4

File tree

11 files changed

+281
-162
lines changed

11 files changed

+281
-162
lines changed

web_form_banner/README.rst

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22
Web Form Banner
33
===============
44

5-
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5+
..
6+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
67
!! This file is generated by oca-gen-addon-readme !!
78
!! changes will be overwritten. !!
89
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10+
!! source digest: sha256:abc8ad462d827f2f1b07f5fed63fe06f86ee2a9121f5a0c0e77f1ae8607ef8f1
11+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
912
1013
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
1114
:target: https://odoo-community.org/page/development-status
@@ -14,16 +17,16 @@ Web Form Banner
1417
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
1518
:alt: License: AGPL-3
1619
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
17-
:target: https://github.com/OCA/web/tree/12.0/web_form_banner
20+
:target: https://github.com/OCA/web/tree/15.0/web_form_banner
1821
:alt: OCA/web
1922
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
20-
:target: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_form_banner
23+
:target: https://translation.odoo-community.org/projects/web-15-0/web-15-0-web_form_banner
2124
:alt: Translate me on Weblate
22-
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
23-
:target: https://runbot.odoo-community.org/runbot/162/12.0
24-
:alt: Try me on Runbot
25+
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
26+
:target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=15.0
27+
:alt: Try me on Runboat
2528

26-
|badge1| |badge2| |badge3| |badge4| |badge5|
29+
|badge1| |badge2| |badge3| |badge4| |badge5|
2730

2831
The module adds configurable banners for backend **form** views. Define rules per model
2932
(and optionally per view) to show context-aware alerts with a chosen severity (info/warning/danger).
@@ -229,8 +232,8 @@ Bug Tracker
229232

230233
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
231234
In case of trouble, please check there if your issue has already been reported.
232-
If you spotted it first, help us smashing it by providing a detailed and welcomed
233-
`feedback <https://github.com/OCA/web/issues/new?body=module:%20web_form_banner%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
235+
If you spotted it first, help us to smash it by providing a detailed and welcomed
236+
`feedback <https://github.com/OCA/web/issues/new?body=module:%20web_form_banner%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
234237

235238
Do not contact contributors directly about support or help with technical issues.
236239

@@ -263,6 +266,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
263266
mission is to support the collaborative development of Odoo features and
264267
promote its widespread use.
265268

266-
This module is part of the `OCA/web <https://github.com/OCA/web/tree/12.0/web_form_banner>`_ project on GitHub.
269+
This module is part of the `OCA/web <https://github.com/OCA/web/tree/15.0/web_form_banner>`_ project on GitHub.
267270

268271
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

web_form_banner/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@
1414
"views/web_form_banner_rule_views.xml",
1515
],
1616
"demo": ["demo/web_form_banner_rule_demo.xml"],
17-
'installable': True,
17+
"installable": True,
1818
}

web_form_banner/demo/web_form_banner_rule_demo.xml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8" ?>
22
<odoo noupdate="1">
33
<record id="demo_rule_partner_name_length" model="web.form.banner.rule">
44
<field name="name">Partner name length notice</field>
5-
<field name="model_id" ref="base.model_res_partner"/>
5+
<field name="model_id" ref="base.model_res_partner" />
66
<field name="severity">warning</field>
77
<field name="target_xpath">//sheet</field>
88
<field name="position">before</field>
9-
<field name="message_value_code"><![CDATA[
9+
<field
10+
name="message_value_code"
11+
><![CDATA[
1012
name = (record.name or "").strip()
1113
n = len(name)
1214
if n > 20:
@@ -27,25 +29,35 @@ else:
2729
</record>
2830
<record id="demo_rule_partner_email_missing" model="web.form.banner.rule">
2931
<field name="name">Partner email missing notice (dynamic)</field>
30-
<field name="model_id" ref="base.model_res_partner"/>
31-
<field name="trigger_field_ids" eval="[(6, 0, [ref('base.field_res_partner__email')])]"/>
32+
<field name="model_id" ref="base.model_res_partner" />
33+
<field
34+
name="trigger_field_ids"
35+
eval="[(6, 0, [ref('base.field_res_partner__email')])]"
36+
/>
3237
<field name="severity">warning</field>
3338
<field name="target_xpath">//sheet</field>
3439
<field name="position">before</field>
3540
<field name="message">This partner is missing email!</field>
36-
<field name="message_value_code"><![CDATA[
41+
<field
42+
name="message_value_code"
43+
><![CDATA[
3744
{"visible": not bool(draft.email)}
3845
]]></field>
3946
</record>
4047
<record id="demo_rule_partner_tag_missing" model="web.form.banner.rule">
4148
<field name="name">Partner tag missing notice (dynamic)</field>
42-
<field name="model_id" ref="base.model_res_partner"/>
43-
<field name="trigger_field_ids" eval="[(6, 0, [ref('base.field_res_partner__category_id')])]"/>
49+
<field name="model_id" ref="base.model_res_partner" />
50+
<field
51+
name="trigger_field_ids"
52+
eval="[(6, 0, [ref('base.field_res_partner__category_id')])]"
53+
/>
4454
<field name="severity">warning</field>
4555
<field name="target_xpath">//sheet</field>
4656
<field name="position">before</field>
4757
<field name="message">This partner is missing a tag!</field>
48-
<field name="message_value_code"><![CDATA[
58+
<field
59+
name="message_value_code"
60+
><![CDATA[
4961
{"visible": not bool(draft.category_id)}
5062
]]></field>
5163
</record>

web_form_banner/models/ir_model.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,17 @@ def fields_view_get(
2121
current_view_id = view_id or res.get("view_id")
2222
if not current_view_id:
2323
return res
24-
rules = self.env["web.form.banner.rule"].sudo().search(
25-
[
26-
("model_name", "=", self._name),
27-
"|",
28-
("view_ids", "in", current_view_id),
29-
("view_ids", "=", False),
30-
]
24+
rules = (
25+
self.env["web.form.banner.rule"]
26+
.sudo()
27+
.search(
28+
[
29+
("model_name", "=", self._name),
30+
"|",
31+
("view_ids", "in", current_view_id),
32+
("view_ids", "=", False),
33+
]
34+
)
3135
)
3236
if not rules:
3337
return res

web_form_banner/models/web_form_banner_rule.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Copyright 2025 Quartile (https://www.quartile.co)
22
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
33

4+
import datetime as dt
45
import logging
56
import time
6-
import datetime as dt
77
from functools import lru_cache
88
from string import Template
99

@@ -23,8 +23,16 @@
2323

2424
_SIMPLE_FIELD_TYPES = frozenset(
2525
{
26-
"char", "text", "html", "selection", "boolean",
27-
"integer", "float", "monetary", "date", "datetime",
26+
"char",
27+
"text",
28+
"html",
29+
"selection",
30+
"boolean",
31+
"integer",
32+
"float",
33+
"monetary",
34+
"date",
35+
"datetime",
2836
}
2937
)
3038

@@ -110,7 +118,7 @@ class WebFormBannerRule(models.Model):
110118
string="Position",
111119
default="before",
112120
required=True,
113-
help="Where to insert the placeholder relative to the first matched node."
121+
help="Where to insert the placeholder relative to the first matched node.",
114122
)
115123
severity = fields.Selection(
116124
[("info", "Info"), ("warning", "Warning"), ("danger", "Danger")],
@@ -126,7 +134,7 @@ class WebFormBannerRule(models.Model):
126134
message_is_html = fields.Boolean(
127135
"HTML",
128136
help="If checked, 'message' is treated as raw HTML (no escaping). "
129-
"If not checked, the rendered text is escaped and newlines become <br/>."
137+
"If not checked, the rendered text is escaped and newlines become <br/>.",
130138
)
131139
message_value_code = fields.Text(
132140
help="Python expression evaluated server-side. Must return a dict.\n"
@@ -157,8 +165,10 @@ def _build_form_url(self, rec):
157165
try:
158166
if not rec or not getattr(rec, "id", None):
159167
return ""
160-
base = self.env["ir.config_parameter"].sudo().get_param(
161-
"web.base.url", default=""
168+
base = (
169+
self.env["ir.config_parameter"]
170+
.sudo()
171+
.get_param("web.base.url", default="")
162172
)
163173
return "%s/web#id=%d&model=%s&view_type=form" % (base, rec.id, rec._name)
164174
except Exception:
@@ -273,7 +283,8 @@ def compute_message(self, rule_id, model, res_id, form_vals=None):
273283
if not visible:
274284
return {"visible": False}
275285
values = out.get("values") or {
276-
k: v for k, v in out.items()
286+
k: v
287+
for k, v in out.items()
277288
if k not in {"visible", "severity", "values", "html"}
278289
}
279290
html = self._render_html(rule, values, out.get("html"))

0 commit comments

Comments
 (0)