2014-12-03 6 views
1

컨트롤러에서 res.partner 클래스에 선언 된 함수를 호출하려고합니다. 이 컨트롤러는 "외부"이므로 openerplib (도 유효)을 사용하여 모델에서 데이터를 가져와야합니다. 예를 들어openerplib 또는 xmlrpclib를 통해 OpenERP 클래스의 함수를 호출하는 방법은 무엇입니까?

:

connection = openerplib.get_connection (hostname="localhost", database="my_db", login="admin", password="my_pwd", port=8069)  
res_partner_model = connection.get_model("res.partner") 

는 지금은 모델을 가지고 있고 나는 res.partner 모델로부터 데이터를 얻을 수 search, read, 또는 search_read 방법을 사용할 수 있습니다.

하지만 어떻게 그 클래스에서 선언 된 함수를 호출 할 수 있습니까? 가능한가?

답변

0

예 당신이 당신을 도울 것입니다

import xmlrpclib 

#dbname = "my_db" 
#username = "admin" 
#pwd = "my_pwd" 

sock_common = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/common') 
#uid = sock_common.login(dbname, username, pwd) 
uid = sock_common.login("my_db", "admin", "my_pwd") 
sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object') 

#this will search all ids of res_partner class 
partner_ids = sock.execute(dbname, uid, pwd, 'res.partner', 'search',[]) 

for partner_id in partner_ids: 
    #res = sock.execute(dbname, uid, pwd, 'res.partner', 'your_function_name', [partner_id]) 
    res = sock.execute("my_db", uid, "my_pwd", 'res.partner', 'your_function_name', [partner_id]) 
    print '\n====res=====',res 

print " Ending Query ... " 

희망이 시도 xmlrpclib.

를 사용하여 함수를 호출 할 수 있습니다.