odoo10同一模型的不一樣視圖不一樣羣組權限控制

先描述下需求:session

一個模型定義兩個calendar視圖,其中A視圖G1羣組能夠CRUD操做,可是不顯示特殊字段spec_field,對於B視圖G1羣組只能查看,G2羣組只能修改其中的特殊字段spec_fieldapp

因爲odoo10中的calendar視圖、tree視圖的點擊事件走的方法並不相同,因此須要本身處理calendar視圖中form視圖的加載過程;ide

我重寫了formview的load_record()方法,代碼以下:this

 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 },

 

不知是否還有更簡單有效的方法,若是有,你們能夠留言告訴下,謝謝spa

因爲時間問題,寫的比較簡單,有問題下邊留言code

但願能夠幫助有須要的人,共同進步.......................................................orm

相關文章
相關標籤/搜索