我正在努力研究"different permissions based on workflow state"问题,但我正在努力解决这样一个事实,即为了得到这个问题似乎无法在任何时候得到当前对象的id'该对象的许可。我的意思是我设法从客户端状态following jquery bbq docs获取它,如:
$.bbq.getState().id
但是看起来只有在完整页面加载后才可行。我通过在主视图事件中放置一些警报来调查这一点,例如:
openerp.web.PageView = openerp.web.PageView.extend({
on_loaded: function(data) {
this._super(data);
alert('page load ' + $.bbq.getState().id);
},
do_show: function() {
this._super();
alert('page show ' + $.bbq.getState().id);
},
reload: function() {
this._super();
alert('page reload ' + $.bbq.getState().id);
},
on_record_loaded: function(record) {
this._super(record);
alert('record loaded ' + $.bbq.getState().id);
}
});
我发现当您打开页面视图时(例如,通过点击搜索视图中的项目),您将始终“未定义”。
然后,当使用分页导航从一个对象传递到另一个对象时,你会把它变成“reload”和“on_record_loaded”。然后,当您单击“编辑”按钮时,再次错过它。
在表单视图中,我只在第一次加载时成功获得,因为似乎某些缓存就位。那么,如果我将一个pdb放入web客户端的fields_view_get中,我将其转换为“init_view”形式:
var ids = [];
if ($.bbq.getState().id){
ids = [parseInt($.bbq.getState().id)];
}
console.log(ids);
return this.rpc("/web/view/load", {
"model": this.model,
"view_id": this.view_id,
"view_type": "form",
toolbar: this.options.sidebar,
context: context,
ids: ids,
}, this.on_loaded);
我只是第一次加载页面。如果我从
中取出ID,也会发生同样的情况this.dataset.ids
我看了核心网络模块的任何地方,我找不到合适的API,看起来很奇怪(首先是数据集),我们没有正确的方法来获取/处理当前记录/秒。甚至上下文和会话都没有任何相关信息。
可能我应该在第一次加载时将它存储到视图中......
提前感谢任何指示。
答案 0 :(得分:1)
尝试:
this.view.datarecord.id
表格视图中的OpenERP 7: 使用谷歌浏览器调试
答案 1 :(得分:0)
尝试
的组合 this.dataset.ids
和this.dataset.index
像
curr_id = this.dataset.ids[this.dataset.index]
这可能会解决您的问题。