Help

2

[SOLVED] How to find modules model_id for access rules?

Avatar
Samo Arko

I just can't find a working external id for the model hr_employee. When I look at the meta data in debug it says "XML ID: /". In the database ir.model.data I have:

id: 4633

module: hr

model: hr.employee

I've tried the id 4633, hr.hr_employee, hr_employee, hr.hr.employee, hr.employee, ... nothing works.

All the time I get the error: "External ID not found in the system"

My rule looks like

<data noupdate="1">
	<record id="hr_izracun_place.current_company_employee_access_rule" model="ir.rule">
		<field name="name">Show employees by company</field>
		<field name="model_id" ref="hr.hr_employee"/>
		<field name="domain_force">
			[('address_id', 'in' [user.company_id.id])]
		</field>
	</record>
</data>

I really don't know how to get this working and why it's not working? 

 


2 Comments
Avatar
Discard
Avatar
Mohammed Amal N
-

why don't you just check in Odoo how they defined it. here is an example

<field name="model_id" ref="model_account_move"/> for model account.move

Avatar
Mohammed Amal N
-

if using outside the module in which the model is defined, then you will have to define like module_name.model_model_name

2 Answers
1
Avatar
Samo Arko
Best Answer

2 hours of googling and nothing, but after posting the question I find the answer in next try. One can see the external identifier in debug mode under Settings -> Technical -> ... -> External Identifiers

Avatar
Discard
0
Avatar
Remy
Best Answer

As far as I can tell, the model ID is auto-generated based on module and model.

For example: the model my.object in the module my_module

When searching for it:

self.env['my.object']

When referencing it in XML:

<field name="model_id" ref="my_module.model_my_object">

Notice that the . (dot) character is replaced by _ (underscore) in the model reference.

Avatar
Discard