2017-08-03 11 views
1

我試圖創建一個表單視圖。Odoo 9是否有一種方法來處理在表單視圖中某一個領域有不同的組授權?

<field name="is_positive" attrs="{'readonly':[('state','==','final')]}"/> 

然而,有許多屬性等基團和無形的相關授權,因此某些羣體的人可以看到現場。

groups="base.group_hr_user" 

但是有沒有辦法讓某些團隊可以編輯字段而另一個團隊不能?

+0

您可以從參考這個答案:https:// stackoverflow。com/questions/18912997/how-to-make-field-readonly-based-on-group-and-status –

回答

3

首先,你不能使用域這樣一個

<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> 
+0

你的回答是更多\t高效的很好的答案,但你沒有使用xpath表達它是否像這樣工作? – Cherif

+1

是的,它的工作原理。如果在被調用的元素中沒有歧義,它就可以工作。使用Xpath,您可以擁有更多控制權。但是,如果假設您確信表單中只有一個名爲'some_field'的字段,則可以使用此語法更快地編寫代碼。 – Majikat

+0

謝謝!它爲我工作,這是我正在尋找高效使用Odoo的人。 –

2

添加新的字段,以檢查用戶是否是管理員或用戶。

新的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')]}"/> 
+0

我不認爲自己會有一個'user_has_groups'方法。 @ aslamsha22的回答比較好。 – Majikat

+1

請 - > https://github.com/odoo/odoo/search?p=2&q=user_has_groups&type=&utf8=%E2%9C%93 –

+0

OH。我的錯。那是你在那裏展示的超級方便的功能。但是,您的計算方法仍然返回一個值,而不是設置check_user。 – Majikat

1

我將展示一個例子,該功能在銷售團隊是如何工作的。

我做在銷售訂單行的單價場讓只讀我們選擇用戶組user:own documents only領域是編輯其他2組user:All documetsmanager

首先我創建了一個布爾字段用於檢查用戶是屬於哪個組

​​

然後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> 
+0

感謝您的評論。這對我來說和Odoo一起使用python是很好的。謝謝 –

相關問題