This question has been flagged
2 Replies
11462 Views

Hi,

On openERP V7, I want to list all the supplier via an XMLRPC request. I am testing the code via the tool: xmlrpc-test-tool where I set :

XMLRPC-Server= http://openerpServerName:8069/xmlrpc/object Custom method = "execute" Param1 = reponsitory01, Param2 = 1, Param3 = thePassword, Param4 = 'search' Param 5 = ''

Following error are raised

   XML-RPC Fault #-1 : Traceback (most recent call last):
      File "/opt/openerp/server/openerp/service/wsgi_server.py", line 82, in xmlrpc_return
        result = openerp.netsvc.dispatch_rpc(service, method, params)
      File "/opt/openerp/server/openerp/netsvc.py", line 293, in dispatch_rpc
        result = ExportService.getService(service_name).dispatch(method, params)
      File "/opt/openerp/server/openerp/service/web_services.py", line 626, in dispatch
        res = fn(db, uid, *params)
      File "/opt/openerp/server/openerp/osv/osv.py", line 131, in wrapper
        return f(self, dbname, *args, **kwargs)
      File "/opt/openerp/server/openerp/osv/osv.py", line 197, in execute
        res = self.execute_cr(cr, uid, obj, method, *args, **kw)
      File "/opt/openerp/server/openerp/osv/osv.py", line 185, in execute_cr
        return getattr(object, method)(cr, uid, *args, **kw)
      File "/opt/openerp/server/openerp/osv/orm.py", line 2354, in search
        return self._search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count)
      File "/opt/openerp/server/openerp/osv/orm.py", line 4844, in _search
        self._apply_ir_rules(cr, user, query, 'read', context=context)
      File "/opt/openerp/server/openerp/osv/orm.py", line 4726, in _apply_ir_rules
        rule_where_clause, rule_where_clause_params, rule_tables = rule_obj.domain_get(cr, uid, self._name, mode, context=context)
      File "/opt/openerp/server/openerp/addons/base/ir/ir_rule.py", line 150, in domain_get
        dom = self._compute_domain(cr, uid, model_name, mode)
      File "/opt/openerp/server/openerp/tools/cache.py", line 18, in lookup
        r = self.lookup(self2, cr, *args)
      File "/opt/openerp/server/openerp/tools/cache.py", line 46, in lookup
        value = d[key] = self.method(self2, cr, *args)
      File "/opt/openerp/server/openerp/addons/base/ir/ir_rule.py", line 130, in _compute_domain
        rule_domain = self.read(cr, uid, rule.id, ['domain'])['domain']
      File "/opt/openerp/server/openerp/osv/orm.py", line 3604, in read
        result = self._read_flat(cr, user, select, fields, context, load)
      File "/opt/openerp/server/openerp/osv/orm.py", line 3724, in _read_flat
        res2 = self._columns[f].get(cr, self, ids, f, user, context=context, values=res)
      File "/opt/openerp/server/openerp/osv/fields.py", line 1131, in get
        result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
      File "/opt/openerp/server/openerp/addons/base/ir/ir_rule.py", line 53, in _domain_force_get
        res[rule.id] = expression.normalize_domain(eval(rule.domain_force, eval_context))
      File "/opt/openerp/server/openerp/tools/safe_eval.py", line 241, in safe_eval
        return eval(test_expr(expr, _SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
      File "", line 1, in <module>
    AttributeError: 'NoneType' object has no attribute 'id'

Where did I do wrong ?

Avatar
Discard
Best Answer

try the search parameter as an empty list, []. Also you need to specify the model on which you are searching

Avatar
Discard
Author

I added the param : res.partner and also the last param for the search I added : [], so in final : I have XMLRPC-Server= http://openerpServerName:8069/xmlrpc/object Custom method = "execute" Param1 = reponsitory01, Param2 = 1, Param3 = thePassword, Param4=res.partner, Param4 = 'search' Param 5 = '[]' I have the following error: File "/opt/openerp/server/openerp/osv/orm.py", line 4843, in _search query = self._where_calc(cr, user, args, context=context) File "/opt/openerp/server/openerp/osv/orm.py", line 4669, in _where_calc domain.insert(0, ('active', '=', 1)) AttributeError: 'st

Best Answer

This is an exemple code:

sock_common = xmlrpclib.ServerProxy('http://'+SERVER+':'+PORT+'/xmlrpc/common',allow_none=True)
sock = xmlrpclib.ServerProxy('http://'+SERVER+':'+PORT+'/xmlrpc/object',allow_none=True)
uid = sock_common.login(DB_NAME, USER, PASSWORD)
record_ids = sock.execute(DB_NAME, uid, PASSWORD, 'res.partner', 'search', [('supplier', '=', True)])
suppliers = sock.execute(DB_NAME, uid, PASSWORD, 'res.partner', 'read', record_ids, ['id', 'name'])
for supplier in suppliers:
    print supplier
Avatar
Discard
Author

I added 2 more parameters: res.partner and the [] , error has change to: XML-RPC Fault #-1 : Traceback (most recent call last): File "/opt/openerp/server/openerp/service/wsgi_server.py", line 82, in xmlrpc_return result = openerp.netsvc.dispatch_rpc(service, method, params) File "/opt/openerp/server/openerp/netsvc.py", line 293, in dispatch_rpc result = ExportService.getService(service_name).dispatch(method, params) File "/opt/openerp/server/openerp/service/web_services.py", line 626, in dispatch res = fn(db, uid, *params) File "/opt/openerp/server/openerp/osv/osv.py", line 131, in wrapper re

Can you post your code? but not here...use some site like paste or similar. Thanks.

Author

Actually I am not using any code yet. I am using a tool to test the query first. When it will success, then I will write the code. Tools is : https://code.google.com/p/xmlrpc-test/

Sorry, I don't know it...I use to write scripts when I need to use xmlrpc

Any update on this? I am getting the same errors using the tool at http://www.tomhost.de/dev/tools/xmlrpc-tt/ and I get similar errors via code. The weird thing is that I had this working fine via code and then I started getting XML-RPC errors so it leads me to believe it is an issue with my data or configuration since it was working and I didn't change my code.