在外部应用中使用接口方式调用Odoo函数
程序员文章站
2023-12-27 18:16:03
...
首先,在应用中定义insert2odoo()函数。
函数中声明了调用odoo所需的url/db/password等参数,uid=2表示是admin帐户。
try语句中,是真正的“使用接口方式”。可以看到包含了odoo中的model名称,被调用函数等。
随后在main()中调用了insert2odoo()函数,并赋予了参数。
import traceback
from xmlrpc import client as xmlrpclib
def insert2odoo(message):
url = 'http://localhost:8012'
db = 'odoo12'
#user = 'admin'
pass_word = 'admin'
# common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url))
# uid = common.authenticate(db,user,pass_word,{})
uid = 2
if uid:
try:
models=xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url))
res = models.execute_kw(db,uid,pass_word,'packtopo.blcode','create_blcode',[['data','=',message]],)
#logging.info('send xmlrpc data '+ res)
#print(res)
return res
except Exception as e:
traceback.print_exc()
#logging.info('fail to send xmlrpc data ')
return 0
def main():
json_data=[]
data = {
'name': "BLA123P009",
'uacode':"UAA123P009",
'send_date':"2021-05-14 14:24:22"
}
json_data.append(data)
insert2odoo(json_data)
if __name__ =='__main__':
main()
接下来,在odoo中创建一个自定义函数create_blcode。
它调用了默认model中的create函数。
@api.model
def create_blcode(self, vals):
logging.info('-------------------start create_blcode------------')
json_data = vals[2]
for data in json_data:
name = data.get('name')
uacode = data.get('uacode')
send_date = data.get('send_date')
value = {
'name': name,
'uacode': uacode,
'send_date': send_date
}
self.create(value)
logging.info('-------------------end create_blcode success------------')
return ("ok")
扩展阅读:
https://blog.csdn.net/weixin_35737303/article/details/72423572
https://blog.csdn.net/qq_38894046/article/details/104661171
推荐阅读