Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

string to integer in salary rule python

By
Felipe
on 7/3/13, 11:40 AM 2,578 views

In the object hr.salary.rule in field amount_python_compute I need to transform a string into a integer.

I tried

int('12')
float('12')
eval('12')
import ast 
ast.literal_eval("12")

but none of these works.

Did you make a custom module, do you change it in the XML, But most important, what is the errormessage(s) and what is in the logfile?

patrick
on 7/3/13, 5:18 PM

it just throw the exception of file hr_payroll.py of the funcion compute_rule raise osv.except_osv(_('Error!'), _('Wrong python code defined for salary rule %s (%s).')% (rule.name, rule.code))

Felipe
on 7/3/13, 5:44 PM

I just found a workaround

Felipe
on 7/3/13, 5:58 PM
0

Felipe

--Felipe--
962
| 5 3 8
Bogotá, Colombia
--Felipe--
Informatics engineer Industrial engineer
Felipe
On 7/3/13, 6:03 PM

you can modify the code in server\openerp\tools\safe_eval.py in function safe_eval in the dictionary variable __builtins__ add:

'int':int

this is the dictionary __builtins__ to note the available functions plus int, those are the funtions that you can use in any module that use safe_eval

__builtins__ = {
            '__import__': _import,
            'True': True,
            'False': False,
            'None': None,
            'str': str,
            'globals': locals,
            'locals': locals,
            'bool': bool,
            'dict': dict,
            'list': list,
            'tuple': tuple,
            'map': map,
            'abs': abs,
            'min': min,
            'max': max,
            'reduce': reduce,
            'filter': filter,
            'round': round,
            'len': len,
            'set' : set,
            'int': int
        }

In my opinion this should be implemented in a launchpad branch as I believe int function have no security risks and is a very common function

If you modify the code in the given location, you might loose your modifications when you upgrade your installation of openERP.

patrick
on 7/9/13, 8:10 AM

you would certainly lose the modifications and you have to copy that again, or make a custom module.

Felipe
on 7/10/13, 2:09 PM

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

0 follower(s)

Stats

Asked: 7/3/13, 11:40 AM
Seen: 2578 times
Last updated: 3/16/15, 8:10 AM