This question has been flagged
3 Replies
32416 Views

Hi guys,


I have a strange issue regarding a new security rule that I've added.
Under __openerp__.py I added a dependency to the following modules:

'depends': ['website_portal', 'project_issue', 'website_project_issue', 'project']


I then created a new CSV for the security rules (named ir.model.access.csv) with the following rule:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink

"access_project_project_public_access","Public user access to project.project","model_project_project","base.group_portal",1,1,1,0

When I now try to install / update the module I will get the following error:

Exception: Module loading my_custom_module failed: file my_custom_module/security/ir.model.access.csv could not be processed:

Line 4 : No matching record found for external id 'model_project_project' in field 'Object'

Why do I get this? I have a dependency on the project module, it is installed and a very similar security rule for project.issue works fine:

access_project_issue_public_access","Public user access to project.issue","model_project_issue","base.group_portal",1,1,1,


So what is wrong with this?

Thanks,
Yenthe

Avatar
Discard
Best Answer

If the model it's not defined in the same module of the ir.model.access.csv then you need to specify the module when defining the security line,

like in the module portal_project:

access_project,project,project.model_project_project,base.group_portal,1,0,0,0

For your case is the same:

"access_project_project_public_access","Public user access to project.project","project.model_project_project","base.group_portal",1,1,1,0

Also the "..." are not necessary, the separator is the comma

Avatar
Discard
Author

Wow, that was a really stupid mistake there, sorry.. @Axel what I do find strange is that my other security rule for the model project.issue is working fine without adding project. in front of it, why is this the case? Could this be because I have an inherit of project.issue in one of my Python files?

That's the only reason that I could imagine for that

Author

Interesting that this one option slipped through, I'm going to guess it comes because of the inherit. This set me on the wrong side and never made me think about adding the external module name in front of it. Thank you Axel.

I found myself, in the exact situation. I found success with an inherited module and could not for the life of me understand why other modules (not inherited) would not allow me to alter their permissions. Great job Axel

Best Answer

I had same problem and I solve it by put the new python file name I created in models/__init__

from . import "add your py file here"

ex: 

from . import appointment

which I forget to do in first time ,,

so give it a try


Avatar
Discard
Best Answer

Be careful about the white-space between comma, there must not be any white-space. like this

#incorrect access_hospital_patient,access.hospital.patient, model_hospital_patient, ,1,1,1,1

#correct access_hospital_patient,access.hospital.patient,model_hospital_patient,,1,1,1,1

Avatar
Discard