2017-08-12 3 views
0

myモジュールpost_loadの後に 'bus.bus'モデルを取得する必要があります。しかし、私は例外を取得:HTTP要求の外でodoo 10環境を取得する

Traceback (most recent call last): 
    File "/path/to/file.py", line 19, in __call__ 
    self.event_bus.sendone('channel', 'message') 
    File "/opt/odoo10/addons/bus/models/bus.py", line 70, in sendone 
    self.sendmany([[channel, message]]) 
    File "/opt/odoo10/addons/bus/models/bus.py", line 54, in sendmany 
    self.sudo().create(values) 
    File "/opt/odoo10/odoo/models.py", line 4870, in sudo 
    return self.with_env(self.env(user=user)) 
    File "/opt/odoo10/odoo/api.py", line 781, in __call__ 
    return Environment(cr, uid, context) 
    File "/opt/odoo10/odoo/api.py", line 726, in __new__ 
    env, envs = None, cls.envs 
    File "/opt/odoo10/odoo/tools/func.py", line 111, in __get__ 
    return self.fget.__get__(None, owner)() 
    File "/opt/odoo10/odoo/api.py", line 699, in envs 
    return cls._local.environments 
    File "/opt/odoo10/venv/local/lib/python2.7/site-packages/werkzeug/local.py", line 72, in __getattr__ 
    raise AttributeError(name) 
AttributeError: environments 

私はこのような環境を取得してみてください:

registry = RegistryManager.get(db_name) 
cursor = registry.cursor() 
return Environment(cursor, None, context={}) 

を、どのように私は、HTTP要求の外に正しい環境を得ることができますか?

答えて

0

Environmentを次のように使用してください。

from odoo import api, fields, models, _ 

env = api.Environment(cr, SUPERUSER_ID, {}) 
return env 
+0

ただし、SUPERUSER_IDはどのように取得できますか? – triplustri

+0

ドンをお持ちでない場合'スーパーユーザーIDを持っている場合はEnvironment.uidを渡します –

+0

odoo 10を使用しています - AttributeError:タイプオブジェクト 'Environment'に属性 'uid'がありません – triplustri

関連する問題