如何通过rpc查询获取值?
How to get value through rpc query?
我写了一个JS代码来替换一个已有的功能,
这里是 .
我替换成功了。
现在我想判断用户是否有删除记录的权限。
我不想通过ir.model.access
来控制它或者重写unlink方法,它不能提前做其他事情。
系统可能会根据用户级别删除记录或发送邮件给管理员。
然后我需要从 RPC 查询中得到一个结果。
_admin_check: function(){
var urlParams = new URLSearchParams(url);
var id = urlParams.get('id');
var uid = odoo.session_info.uid;
return rpc.query({
model: 'res.users',
method: 'check_administration',
args: [id,uid],
}).then(function (result) {
console.log(result)
return result // how to actually return result
});
},
我调用的RPC函数
def check_administration(self,uid):
groups = self.env['res.groups']
bs_manager = []
lv8 = groups.search([('name', '=', 'level 8')]).users.ids
lv7 = groups.search([('name', '=', 'level 7')]).users.ids
admin = groups.search([('name', '=', 'setting')]).users.ids
bs_manager = [r for r in admin if r not in bs_manager]
bs_manager += [r for r in lv8 if r not in bs_manager]
bs_manager += [r for r in lv7 if r not in bs_manager]
if uid not in bs_manager:
return False
else:
return True
然后我在删除确认期间调用此函数 (_admin_check
)。
if (this.confirmOnDelete) {
var is_admin = self._admin_check();
if(is_admin){
Dialog.confirm(this, _t("Are you sure you want to delete this record ?"), {
confirm_callback: doIt,
});
}
else{
Dialog.confirm(this, _t("You are not allow to delete this record. Sysyem will send a request to administrators. "), {
confirm_callback: self.send_delete_request(),
});
}
} else {
doIt();
}
我确定控制台可以得到结果是真还是假。
但是好像不能通过变量is_admin
获取。
如何通过rpc查询获取?
似乎无法通过 RPC return 值,
然后我尝试在确认中直接使用 RPC。
if (this.confirmOnDelete) {
var urlParams = new URLSearchParams(url);
var id = urlParams.get('id');
var uid = odoo.session_info.uid;
rpc.query({
model: 'res.users',
method: 'check_administration',
args: [id,uid],
}).then(function (result) {
if(result){
Dialog.confirm(this, _t("Are you sure you want to delete this record ?"), {
confirm_callback: doIt,
});
}
else{
Dialog.confirm(this, _t("You are not allow to delete this record. Sysyem will send a request to administrators."), {
confirm_callback: self.send_delete_request(),
});
}
});
}
我写了一个JS代码来替换一个已有的功能,
这里是
我替换成功了。
现在我想判断用户是否有删除记录的权限。
我不想通过ir.model.access
来控制它或者重写unlink方法,它不能提前做其他事情。
系统可能会根据用户级别删除记录或发送邮件给管理员。 然后我需要从 RPC 查询中得到一个结果。
_admin_check: function(){
var urlParams = new URLSearchParams(url);
var id = urlParams.get('id');
var uid = odoo.session_info.uid;
return rpc.query({
model: 'res.users',
method: 'check_administration',
args: [id,uid],
}).then(function (result) {
console.log(result)
return result // how to actually return result
});
},
我调用的RPC函数
def check_administration(self,uid):
groups = self.env['res.groups']
bs_manager = []
lv8 = groups.search([('name', '=', 'level 8')]).users.ids
lv7 = groups.search([('name', '=', 'level 7')]).users.ids
admin = groups.search([('name', '=', 'setting')]).users.ids
bs_manager = [r for r in admin if r not in bs_manager]
bs_manager += [r for r in lv8 if r not in bs_manager]
bs_manager += [r for r in lv7 if r not in bs_manager]
if uid not in bs_manager:
return False
else:
return True
然后我在删除确认期间调用此函数 (_admin_check
)。
if (this.confirmOnDelete) {
var is_admin = self._admin_check();
if(is_admin){
Dialog.confirm(this, _t("Are you sure you want to delete this record ?"), {
confirm_callback: doIt,
});
}
else{
Dialog.confirm(this, _t("You are not allow to delete this record. Sysyem will send a request to administrators. "), {
confirm_callback: self.send_delete_request(),
});
}
} else {
doIt();
}
我确定控制台可以得到结果是真还是假。
但是好像不能通过变量is_admin
获取。
如何通过rpc查询获取?
似乎无法通过 RPC return 值, 然后我尝试在确认中直接使用 RPC。
if (this.confirmOnDelete) {
var urlParams = new URLSearchParams(url);
var id = urlParams.get('id');
var uid = odoo.session_info.uid;
rpc.query({
model: 'res.users',
method: 'check_administration',
args: [id,uid],
}).then(function (result) {
if(result){
Dialog.confirm(this, _t("Are you sure you want to delete this record ?"), {
confirm_callback: doIt,
});
}
else{
Dialog.confirm(this, _t("You are not allow to delete this record. Sysyem will send a request to administrators."), {
confirm_callback: self.send_delete_request(),
});
}
});
}