如何将活动ID传递给OpenERP 7.0中的弹出窗口

时间:2014-04-08 16:29:48

标签: python openerp-7

我正在尝试将活动ID传递给弹出窗口,以便在我的函数中我可以访问调用者对象的实际状态。

为此,我做了以下事情。在XML视图中:

<page string="Opinions">
    <field name="opinion_ids" context="{'generic_request_id': active_id}" >
        <tree delete="false"> 
            <field name="request_state" />
            <field name="opinion_request_date" />
            <field name="requestor" />
        (...)

在python中我有:

_defaults={
    'state': 'requested',
    'opinion_request_date': lambda *a: datetime.date.today().strftime('%Y-%m-%d'),
    'request_state': lambda self, cr, uid, context: self._get_request_state(cr, uid, context=context), #store the state of the request when opinion was asked
    (...)
}
(...)
def _get_request_state(self, cr, uid, context=None):
    ids = context.get('generic_request_id', False)
    #import pdb; pdb.set_trace()        
    return self.pool.get('generic.request').browse(cr, uid, ids, context).state

在pdb中我意识到&#34; ids&#34;是错误的,因为上下文中没有generic_request_id变量...

(Pdb) p ids
False

(Pdb) p context
{'lang': 'en_US', 'no_store_function': True, 'tz': False, 'uid': 1}

任何人都知道这样做的方法吗?

1 个答案:

答案 0 :(得分:2)

我最终使用工作流程功能,无需上下文 由于我的opinions对象与many2one对象有requests连接,因此父请求的id存储在generic_request_id字段中。

创建后,我的工作流程会被触发,我会使用新值state更新字段request_state,并将值存储在我的调用对象中。

def request_opinion(self, cr, uid, ids, context=None):
    self.write(cr, uid, ids, {'state': 'requested', 'request_state': self.browse(cr, uid, ids, context=context)[0].generic_request_id.state })
    return True

这样我解决了我的问题 我将此留在这里,希望这将有助于将来的某个人!