Odoo14自定义模块导出权限
1.js
odoo.define('fsn_base/js/data_export.js', function (require) { "use strict"; var ListController = require('web.ListController'); var session = require('web.session'); var rpc = require("web.rpc"); ListController.include({ check_the_permissions: async function () { // 判断是否是超级用户 if (session.is_admin) { return true } else { var is_show = rpc.query({ // POST route: "/fsn_base/check_the_permissions", params: { "model": this.modelName, "user_id": session.uid, } }).then((res) => { return res.is_show }) return is_show } }, willStart: function() {
const sup = this._super(...arguments);
const exp = this.check_the_permissions().then(isExportEnable => {
this.isExportEnable = isExportEnable;
})
return Promise.all([sup, exp]);
}
});
});
2.controllers
from odoo import http class DataExportSetting(http.Controller): @http.route('/fsn_base/check_the_permissions/', methods=['POST', 'GET'], type='json', auth="user") def check_the_permissions(self, **kw): model_name = kw.get("model") user_id = kw.get("user_id") is_show = False ir_model_obj = http.request.env["ir.model"].sudo().search([("model", "=", model_name)]) data_export_setting_obj = http.request.env["data_export_setting"].sudo().search([("model_id", "=", ir_model_obj.id)]) if data_export_setting_obj and user_id in data_export_setting_obj.users.ids: is_show = True return {"is_show": is_show}
3.models
from odoo import api, fields, models from odoo.exceptions import ValidationError class DataExportSetting(models.Model): _name = 'data_export_setting' _description = 'FSN数据导出权限设置' _rec_name = 'name' _order = "create_date desc" def set_res_group_id(self): return self.env.ref('base.group_allow_export').id name = fields.Char(string="名称", required=True) model_id = fields.Many2one('ir.model', string='模型', required=True, ondelete='cascade') users = fields.Many2many('res.users', string="员工") res_group_id = fields.Many2one("res.groups", string="组别", compute="set_res_group_id_users", store=True, default=set_res_group_id) # 检查数据唯一性 @api.constrains('model_id') def _check_unique(self): demo = self.env[self._name].sudo().search([ ('model_id', '=', self.model_id.id) ]) if len(demo) > 1: raise ValidationError("已经存在该模型的导出权限设置记录了!") @api.depends('users') def set_res_group_id_users(self): for record in self: for user in record.users: record.res_group_id.users = [(4, user.id)]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下