← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 662493] Re: [TRUNK and 5.0] SLICE opcodes missing in safe_eval() (string[:])

 

For V5 is broken:

report :
[2010-10-18 12:44:23,469][v5report] ERROR:report:[18]: Traceback (most recent call last):
[2010-10-18 12:44:23,469][v5report] ERROR:report:[19]:   File "/home/nhomar/proyectos_bazaar/5.0/bin/report/render/rml2pdf/utils.py", line 116, in _process_text
[2010-10-18 12:44:23,470][v5report] ERROR:report:[20]:     txt = eval(expr,self.localcontext)
[2010-10-18 12:44:23,470][v5report] ERROR:report:[21]:   File "/home/nhomar/proyectos_bazaar/5.0/bin/tools/safe_eval.py", line 271, in safe_eval
[2010-10-18 12:44:23,470][v5report] ERROR:report:[22]:     return eval(test_expr(expr,_SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
[2010-10-18 12:44:23,470][v5report] ERROR:report:[23]:   File "/home/nhomar/proyectos_bazaar/5.0/bin/tools/safe_eval.py", line 105, in test_expr
[2010-10-18 12:44:23,471][v5report] ERROR:report:[24]:     raise ValueError("opcode %s not allowed (%r)" % (opname[code], expr))
[2010-10-18 12:44:23,471][v5report] ERROR:report:[25]: ValueError: opcode SLICE+2 not allowed ('"Introspection report on objects"[:10]')
[2010-10-18 12:44:23,471][v5report] ERROR:report:[26]: 
[2010-10-18 12:44:23,471][v5report] ERROR:report:[27]: opcode SLICE+2 not allowed ('"Introspection report on objects"[:10]')
[2010-10-18 12:44:23,471][v5report] ERROR:report:[28]: expr: "Introspection report on objects"[:10]

With a wired string...

 report :
[2010-10-18 12:46:41,643][v5report] ERROR:report:[18]: Traceback (most recent call last):
[2010-10-18 12:46:41,644][v5report] ERROR:report:[19]:   File "/home/nhomar/proyectos_bazaar/5.0/bin/report/render/rml2pdf/utils.py", line 116, in _process_text
[2010-10-18 12:46:41,644][v5report] ERROR:report:[20]:     txt = eval(expr,self.localcontext)
[2010-10-18 12:46:41,644][v5report] ERROR:report:[21]:   File "/home/nhomar/proyectos_bazaar/5.0/bin/tools/safe_eval.py", line 271, in safe_eval
[2010-10-18 12:46:41,644][v5report] ERROR:report:[22]:     return eval(test_expr(expr,_SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
[2010-10-18 12:46:41,645][v5report] ERROR:report:[23]:   File "/home/nhomar/proyectos_bazaar/5.0/bin/tools/safe_eval.py", line 105, in test_expr
[2010-10-18 12:46:41,645][v5report] ERROR:report:[24]:     raise ValueError("opcode %s not allowed (%r)" % (opname[code], expr))
[2010-10-18 12:46:41,645][v5report] ERROR:report:[25]: ValueError: opcode SLICE+2 not allowed ('module.name[:6]')
[2010-10-18 12:46:41,645][v5report] ERROR:report:[26]: 
[2010-10-18 12:46:41,645][v5report] ERROR:report:[27]: opcode SLICE+2 not allowed ('module.name[:6]')
[2010-10-18 12:46:41,646][v5report] ERROR:report:[28]: expr: module.name[:6]

with a "variable" string----

-- 
[TRUNK and 5.0] SLICE opcodes missing in safe_eval() (string[:])
https://bugs.launchpad.net/bugs/662493
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to OpenERP OpenObject.

Status in OpenObject Addons Modules: Confirmed
Status in OpenObject Addons 5.0 series: Confirmed
Status in OpenObject Addons trunk series: Confirmed

Bug description:
Slice opcodes are missing in safe_eval, that means that you cannot use the string slice operator [:] in reports.

For example [[ o.partner_id.vat[2:] ]] will fail.

The missing opcodes are:

  SLICE+0    Implements TOS = TOS[:]. 
  SLICE+1    Implements TOS = TOS1[TOS:]. 
  SLICE+2    Implements TOS = TOS1[:TOS]. 
  SLICE+3    Implements TOS = TOS2[TOS1:TOS]. 


--- Original report: ---

Hello.

We detected this error some time ago.

As we know yo can put on line python functions between [[  ]] and on rml reports this was evaluated, at least until V5.0.12, right, we used this to take o the 2 first letters to the VAT number, for example in a report, the Vat number is in this way, VEJ123456789, for european countrie it is BEXXXXXXXXX, the 2 first letters are not necesary on some reports for this reason we use this on reports.

[[ o.partner_id.vat[2:] ]]

Last time it works was in 5.0.12, right now this kind of simply python functions on string are not working, and no error and no traceback...

Thanks.

How do i can try it?.

Use the report "Overdue Payment" on partner.

For trunk_
account/report/account_print_overdue.rml

In line 102:
          <para style="terp_default_9">[[ addr['street'] ]]</para>
replace by
          <para style="terp_default_9">[[ addr['street'][:4] ]]</para>

Go to customers> select China Export> Overdue Payments on Reports.

Originaly it return:
52 Chop Suey street (PDF1)

With change it should return only the first 4 elements on string, I mean: "52 C" against this It is returning the function as if it have an error on sintax.(PDF2)

You can try in V5 too, i dont think we need to develop a "parser" for a than simply function...

If you try other like "upper()" this are working fne, speccially i don't know why it is happening.

regards.







References