Skip to Content
เมนู
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
คำถามนี้ถูกตั้งค่าสถานะ
1 ตอบกลับ
2289 มุมมอง

I want to use fields_view_get() method to make invisible the edit button for a specific user for a specific condition. 

But I couldn't get the model data in in this method.

suppose I'm using this method in " hr.applicant " model. And this model has a field stage_id .  When is method is executing I want the values of stage_id. I'm using odoo 15 

 

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

Hi,

You cannot get the model data or record data inside the fields_view_,get or get_view method.

If you check the execution of the function,  it execute only when the view is loaded initially and won't get executed on switching between records. 


if you can tell us, the condition that you are trying to add, lets see if we can do with any approach. 

Thanks 

อวตาร
ละทิ้ง
ผู้เขียน

I want this condition. I added the full code. Please check

@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):

result = super(Applicant, self).fields_view_get(view_id=view_id, view_type=view_type,
toolbar=toolbar,
submenu=submenu)

# Disabling the edit button for vendor user not in "New" stage
if view_type == 'form':
doc = etree.XML(result['arch'])
user = self.env.user

if self.stage_id.name != 'New' and user.partner_id.is_vendor and user.has_group('recruitment_extension.group_hr_recruitment_vendor'):
# When the user is 'Vendor' and the stage is not 'New' then the edit button will be invisible
for node in doc.xpath("//form"):
# Set the edit to false
node.set('edit', "false")
result['arch'] = etree.tostring(doc)
return result

Related Posts ตอบกลับ มุมมอง กิจกรรม
1
มิ.ย. 25
1563
3
ก.ค. 25
3226
1
พ.ค. 25
1375
1
พ.ค. 25
1627
4
พ.ค. 25
2774