Skip to content

Commit

Permalink
[FIX] report_qweb_parameter: out and raw doesn't work with conditionals
Browse files Browse the repository at this point in the history
  • Loading branch information
ValentinVinagre committed Jan 15, 2025
1 parent 2a388f6 commit efd4d85
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 6 deletions.
19 changes: 17 additions & 2 deletions report_qweb_parameter/demo/test_report_field_length.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@
t-esc="docs[0].street"
t-if="docs[0].street"
/>
<li
name="esc_conditional_length"
t-length="3"
t-esc="docs[0].name or docs[0].company_registry"
/>
<li
name="esc_maxlength"
t-maxlength="10"
Expand All @@ -28,21 +33,31 @@
t-raw="docs[0].vat"
t-if="docs[0].vat"
/>
<li
name="raw_conditional_length"
t-length="4"
t-raw="docs[0].name or docs[0].company_registry"
/>
<li
name="raw_maxlength"
t-maxlength="10"
t-raw="docs[0].company_registry"
t-if="docs[0].company_registry"
/>
<li
name="raw_length"
name="out_length"
t-minlength="10"
t-length="10"
t-out="docs[0].vat"
t-if="docs[0].vat"
/>
<li
name="raw_maxlength"
name="out_conditional_length"
t-length="5"
t-out="docs[0].name or docs[0].company_registry"
/>
<li
name="out_maxlength"
t-maxlength="10"
t-out="docs[0].company_registry"
t-if="docs[0].company_registry"
Expand Down
4 changes: 2 additions & 2 deletions report_qweb_parameter/models/ir_qweb.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def _compile_directive_out(self, el, compile_context, level):
)
if "t-length" in el.attrib:
tlength = el.attrib.pop("t-length")
el.attrib["t-out"] = el.attrib["t-out"] + "[:" + tlength + "]"
el.attrib["t-out"] = '(' + el.attrib["t-out"] + ")[:" + tlength + "]"
return super()._compile_directive_out(el, compile_context, level)

def _compile_directive_raw(self, el, compile_context, level):
Expand All @@ -68,5 +68,5 @@ def _compile_directive_raw(self, el, compile_context, level):
)
if "t-length" in el.attrib:
tlength = el.attrib.pop("t-length")
el.attrib["t-raw"] = el.attrib["t-raw"] + "[:" + tlength + "]"
el.attrib["t-raw"] = '(' + el.attrib["t-raw"] + ")[:" + tlength + "]"
return super()._compile_directive_raw(el, compile_context, level)
13 changes: 11 additions & 2 deletions report_qweb_parameter/tests/test_report_qweb_parameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,18 @@ def test_qweb_parameter(self):
docs.website = "1234567890" # for avoding that Odoo adds http://
rep = report_object._render(report_name, docs.ids, False)
root = ET.fromstring(rep[0])

# test length
self.assertEqual(root[0].text, "1234567890")
self.assertEqual(root[2].text, "1234567890")
self.assertEqual(root[4].text, "1234567890")
self.assertEqual(root[3].text, "1234567890")
self.assertEqual(root[6].text, "1234567890")

# test condicional length
self.assertEqual(root[1].text, "Tes")
self.assertEqual(root[4].text, "Test")
self.assertEqual(root[7].text, "Test ")

# test maxlength
docs.update({"street": "123456789"})
with self.assertRaises(QWebException):
report_object._render(report_name, docs.ids, False)
Expand Down

0 comments on commit efd4d85

Please sign in to comment.