odoo10同一模型的不同视图不同群组权限控制
先描述下需求:
一个模型定义两个calendar视图,其中A视图G1群组可以CRUD操作,但是不显示特殊字段spec_field,对于B视图G1群组只能查看,G2群组只能修改其中的特殊字段spec_field
由于odoo10中的calendar视图、tree视图的点击事件走的方法并不相同,所以需要自己处理calendar视图中form视图的加载过程;
我重写了formview的load_record()方法,代码如下:
1 load_record: function (record) { 2 var self = this; 3 this._super.apply(this, arguments); 4 if (self.model == 'esw.working.hours.assign') { 5 6 //管理员只允许查看填报,将编辑按钮隐藏掉 7 self.session.user_has_group('esw_calendar.esw_working_hours_group_view').then(function (has_group) { 8 if (has_group && self.ViewManager.action && 9 self.ViewManager.action.xml_id == 'esw_calendar.open_esw_working_hours_fill_in_calendar'){ 10 self.$buttons.find('.o_form_button_edit').hide(); 11 } 12 }) 13 14 //对于从open_esw_working_hours_tree这个calendar视图打开的formview做填报判断,已填报的工时不允许编辑 15 if (self.ViewManager.action && 16 self.ViewManager.action.xml_id == 'esw_calendar.open_esw_working_hours_tree' && 17 self.$el.find('input[name=is_filled_in]').length>0 && 18 self.$el.find('input[name=is_filled_in]')[0].checked){ 19 self.$buttons.find('.o_form_button_edit').hide(); 20 }else if (self.$buttons) { 21 self.$buttons.find('.o_form_button_edit').show(); 22 } 23 } 24 },
不知是否还有更简单有效的方法,如果有,大家可以留言告诉下,谢谢
由于时间问题,写的比较简单,有问题下边留言
希望可以帮助有需要的人,共同进步.......................................................