1
1
# Copyright 2025 Quartile (https://www.quartile.co)
2
2
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3
3
4
- import time
5
4
import datetime as dt
5
+ import time
6
+ from functools import lru_cache
7
+ from string import Template
8
+
6
9
from dateutil import parser as dateparse
7
10
from dateutil .relativedelta import relativedelta
8
- from pytz import timezone
9
-
10
- from functools import lru_cache
11
11
from lxml import etree
12
- from string import Template
12
+ from pytz import timezone
13
13
14
14
from odoo import _ , api , fields , models
15
15
from odoo .exceptions import ValidationError
@@ -42,7 +42,7 @@ class WebFormBannerRule(models.Model):
42
42
string = "Position" ,
43
43
default = "before" ,
44
44
required = True ,
45
- help = "Where to insert the placeholder relative to the first matched node."
45
+ help = "Where to insert the placeholder relative to the first matched node." ,
46
46
)
47
47
severity = fields .Selection (
48
48
[("info" , "Info" ), ("warning" , "Warning" ), ("danger" , "Danger" )],
@@ -58,7 +58,7 @@ class WebFormBannerRule(models.Model):
58
58
message_is_html = fields .Boolean (
59
59
"HTML" ,
60
60
help = "If checked, 'message' is treated as raw HTML (no escaping). "
61
- "If not checked, the rendered text is escaped and newlines become <br/>."
61
+ "If not checked, the rendered text is escaped and newlines become <br/>." ,
62
62
)
63
63
message_value_code = fields .Text (
64
64
help = "Python expression evaluated server-side. Must return a dict.\n "
@@ -82,8 +82,10 @@ def _build_form_url(self, rec):
82
82
try :
83
83
if not rec or not getattr (rec , "id" , None ):
84
84
return ""
85
- base = self .env ["ir.config_parameter" ].sudo ().get_param (
86
- "web.base.url" , default = ""
85
+ base = (
86
+ self .env ["ir.config_parameter" ]
87
+ .sudo ()
88
+ .get_param ("web.base.url" , default = "" )
87
89
)
88
90
return "%s/web#id=%d&model=%s&view_type=form" % (base , rec .id , rec ._name )
89
91
except Exception :
@@ -155,9 +157,9 @@ def compute_message(self, rule_id, model, res_id):
155
157
# If no explicit `values`, treat other keys as template vars
156
158
if not values :
157
159
values = {
158
- k : v for k , v in out . items () if k not in {
159
- "visible" , "severity" , "values" , "html"
160
- }
160
+ k : v
161
+ for k , v in out . items ()
162
+ if k not in { "visible" , "severity" , "values" , "html" }
161
163
}
162
164
if not visible :
163
165
return {"visible" : False }
0 commit comments