Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openerp 如何通过自己编写的插件从Odoo获得环境?_Openerp_Odoo 8 - Fatal编程技术网

Openerp 如何通过自己编写的插件从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获

我尝试通过以下方式获得外壳中的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
获取模型时。我只买奥多的模型

>>> 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()
方法