Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
11925 Lượt xem

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.

Ảnh đại diện
Huỷ bỏ

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?

Tác giả

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))

Tác giả

I just found a workaround

Tác giả Câu trả lời hay nhất

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

Ảnh đại diện
Huỷ bỏ

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

Tác giả

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

Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 7 15
3038
0
thg 12 24
508
2
thg 3 24
829
0
thg 3 24
640
2
thg 2 24
1197