Openerp 如何通过自己编写的插件从Odoo获得环境?
我尝试通过以下方式获得外壳中的Odoo环境:Openerp 如何通过自己编写的插件从Odoo获得环境?,openerp,odoo-8,Openerp,Odoo 8,我尝试通过以下方式获得外壳中的Odoo环境: from openerp.modules.registry import RegistryManager from openerp.api import Environment r = RegistryManager.get('ethicall') cr = r.cursor() Environment.reset() env = Environment(cr, uid, context={}) 当我试图从env.registry.models获
from openerp.modules.registry import RegistryManager
from openerp.api import Environment
r = RegistryManager.get('ethicall')
cr = r.cursor()
Environment.reset()
env = Environment(cr, uid, context={})
当我试图从env.registry.models
获取模型时。我只买奥多的模型
>>> env.registry.models
>>> {'_unknown': _unknown,
'account.account': account.account,
'account.account.template': account.account.template,
'account.account.type': account.account.type,
.....
但我搜索数据库“ethicall”的ir_model表,它包含以下内容:
137 | er.base.account.journal | 帐户流水 | base | | | | |
138 | er.base.account | 基础帐户 | base | | | | |
139 | er.base.budget | 预算计划 | base | | | | |
140 | er.base.expense | 医时费用计划 | base | | | | | | | |
.....
但是它们不在env.registry.models中
在调用env.registry.models
method之前,是否需要加载插件
谢谢 如果您想从shell访问odoo环境,可以使用xmlrpc。在xmlrpc的帮助下,您几乎可以调用模型的每个方法,只需根据您的方法修改execute
下面是一个演示脚本,它将帮助您
import xmlrpclib
print "executing..."
url = 'http://192.168.12.130:8069'
db = 'odoo_addons_9c'
username = 'admin'
password = 'a'
common = xmlrpclib.ServerProxy('{}/xmlrpc/common'.format(url))
models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url))
uid = common.authenticate(db, username, password, {})
model_ids = models.execute_kw(db, uid, password, 'ir.model', 'search', [[]])
model_datas = models.execute_kw(db, uid, password, 'ir.model', 'read', [model_ids], {'fields': ['name']})
for data in model_datas:
print data
有关更多信息,请参见此
希望这有帮助 非常感谢!
我试着阅读openerp.service.server的代码,并找到一种能够获得ODOORM环境的方法:
import openerp
args = ['-c','openerp-server.conf','-d','testbase']
openerp.tools.config.parse_config(args)
from openerp.modules.registry import RegistryManager
from openerp.api import Environment
r = RegistryManager.get('testbase')
cr = r.cursor()
Environment.reset()
env = Environment(cr, uid, context={})
最后,我可以使用env['module\u name'].search()
方法