我試圖創建一個表單視圖。Odoo 9是否有一種方法來處理在表單視圖中某一個領域有不同的組授權?
<field name="is_positive" attrs="{'readonly':[('state','==','final')]}"/>
然而,有許多屬性等基團和無形的相關授權,因此某些羣體的人可以看到現場。
groups="base.group_hr_user"
但是有沒有辦法讓某些團隊可以編輯字段而另一個團隊不能?
我試圖創建一個表單視圖。Odoo 9是否有一種方法來處理在表單視圖中某一個領域有不同的組授權?
<field name="is_positive" attrs="{'readonly':[('state','==','final')]}"/>
然而,有許多屬性等基團和無形的相關授權,因此某些羣體的人可以看到現場。
groups="base.group_hr_user"
但是有沒有辦法讓某些團隊可以編輯字段而另一個團隊不能?
首先,你不能使用域這樣一個
<field name="is_positive" attrs="{'readonly':[('state','==','final')]}"/>
沒有一個'=='
操作,使用=
代替。
現在回答你的問題,如果你想創建另一個組中的一些元素是隻讀了一組特殊的觀點,而在其他編輯,你要這樣說。
對於默認視圖:
<record id="some_model_view" model="ir.ui.view">
<field name="name">some.model.form</field>
<field name="model">some.model</field>
<field name="arch" type="xml">
<form>
<field name="some_field" readonly="1"/>
</form>
<field/>
</record>
對於某一組:
<record id="some_model_view_for_other_group" model="ir.ui.view">
<field name="name">some.model.form</field>
<field name="model">some.model</field>
<field name="inherit_id" ref="my_module.some_model_view"
<field name="groups_id" eval="[(6, 0, [ref('some.first_group')])]" />
<field name="arch" type="xml">
<field name="some_field" position="attributes">
<attribute name="readonly">0</attribute>
</field>
<field/>
</record>
添加新的字段,以檢查用戶是否是管理員或用戶。
新的API方法
check_user = fields.Boolean(string='user',compute='_compute_user_check')
@api.multi
def _compute_user_check(self):
if self.user_has_groups('purchase.group_purchase_manager'):
self.check_user =True
鑑於
<field name="is_positive" attrs="{'readonly':[('check_user','=','True')]}"/>
我將展示一個例子,該功能在銷售團隊是如何工作的。
我做在銷售訂單行的單價場讓只讀我們選擇用戶組user:own documents only
領域是編輯其他2組user:All documets
和manager
首先我創建了一個布爾字段用於檢查用戶是屬於哪個組
然後assig NS布爾場True
當用戶所屬的集團用戶:自己的文檔否則只有分配到False
@api.depends('product_id')
def compute_own_user(self):
res_user_id = self.env['res.users'].search([('id', '=', self._uid)])
for rec in self:
if res_user_id.has_group('sales_team.group_sale_salesman') and not res_user_id.has_group('sales_team.group_sale_salesman_all_leads'):
rec.is_own_user = True
else:
rec.is_own_user = False
在XML使is_own_user無形的,取代了單價場
<xpath expr="//notebook/page/field[@name='order_line']/tree/field[@name='price_unit']" position="replace">
<field name="price_unit" attrs="{'readonly': [('isown_user', '=', True)]}" />
</xpath>
感謝您的評論。這對我來說和Odoo一起使用python是很好的。謝謝 –
您可以從參考這個答案:https:// stackoverflow。com/questions/18912997/how-to-make-field-readonly-based-on-group-and-status –