在上班时间中,有一个名为“ employee_id”的字段。
我想将此字段设置为仅对一个组可编辑(或对其他组设置为只读)。
例如,我只想在“表单”视图中为“经理”组设置字段“ employee_id”可编辑。
我扩展了出勤模块,并在扩展模块的XML中包含以下代码:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_employee_readonly_custom" model="ir.ui.view">
<field name="name">hr.attendance.form</field>
<field name="model">hr.attendance</field>
<field name="inherit_id" ref="hr_attendance.view_attendance_form"/>
<field name="groups_id" eval="[(6,0,[ref('base.group_hr_manager')])]"/>
<field name="arch" type="xml">
<field name="employee_id" position="attributes">
<attribute name="readonly">True</attribute>
</field>
</field>
</record>
</data>
</openerp>
Run Code Online (Sandbox Code Playgroud)
使用此代码,除hr_manager组之外的所有字段都可编辑。那是我想要的相反。
为了达到此目的,我必须修改什么?
编辑:我已经在其他字段中修改了原始代码,以更好地理解。
我找到了!
<xpath expr="//field[@name='employee_id']" position="replace">
<field name="employee_id" attrs="{'readonly':True}"/>
</xpath>
Run Code Online (Sandbox Code Playgroud)
<field name="inherit_id" ref="hr_attendance_extend.view_employee_readonly_custom"/>
Run Code Online (Sandbox Code Playgroud)
<field name="groups_id" eval="[(6, 0, [ref('base.group_hr_manager')])]"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='employee_id']" position="attributes">
<attribute name="readonly">False</attribute>
</xpath>
</field>
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_employee_readonly_custom" model="ir.ui.view">
<field name="name">hr.attendance.form</field>
<field name="model">hr.attendance</field>
<field name="inherit_id" ref="hr_attendance.view_attendance_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='employee_id']" position="replace">
<field name="employee_id" attrs="{'readonly':True}"/>
</xpath>
</field>
</record>
<record id="view_employee_readonly" model="ir.ui.view">
<field name="name">hr.attendance.form</field>
<field name="model">hr.attendance</field>
<field name="inherit_id" ref="hr_attendance_extend.view_employee_readonly_custom" />
<field name="groups_id" eval="[(6, 0, [ref('base.group_hr_manager')])]"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='employee_id']" position="attributes">
<attribute name="readonly">False</attribute>
</xpath>
</field>
</record>
</data>
</openerp>
Run Code Online (Sandbox Code Playgroud)