先描述下需求: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