Files
Odoo-Modules/fusion_repairs/security/ir.model.access.csv
gsinghpal d15d9e4303 fix(fusion_repairs): admin + office users get full read/schedule access
When admin (gsingh, uid=2) opened a repair on the dashboard:
  "Sorry, Gurpreet Singh (id=2) doesn't have 'read' access to:
   - Repair Order, RO-202605-04 (repair.order: 34)
   Blame the following rules:
   - Repair Order: Technician sees own repairs"

Root cause: per-group record rules in Odoo are OR'd within the same
model. Admin had been added directly to fusion_tasks.group_field_technician
in this database (verified via res_groups_users_rel - direct=1), so the
technician's restrictive rule ('only repairs you are assigned to') kicked
in. Until now there was no per-group rule for the Repairs Office groups
to OR against, so the restrictive rule won by default.

Fix - added two pairs of permissive rules:

  rule_repair_order_repairs_user_full        - User can read/write/create
  rule_repair_order_repairs_manager_unlink   - Manager also can delete
  rule_technician_task_repairs_office        - User can read/write/create tasks
  rule_technician_task_repairs_manager_unlink - Manager also can delete tasks

Both have domain_force=[(1,'=',1)] so they grant unrestricted access for
the Repairs groups. OR'd with the field_technician rule, admin and other
office users now see everything. Field technicians who do NOT have any
Repairs group still see only their assigned repairs (rule unchanged).

Also added the matching ir.model.access.csv entries - record rules don't
fire if the user has no model-level ACL. This is the second fix
('office users can schedule') from the same complaint - Repairs User now
has read/write/create on fusion.technician.task; Repairs Manager also
gets unlink.

Verified end-to-end on westin-v19:
  Admin can see 17 repairs (was 0 before fix)
  Admin can read RO-202605-04 -> 'Gurpreet Singh' (the exact failing record)
  Admin can create fusion.technician.task -> permission check passes
  (model's own time-overlap business validation correctly rejects an
  overlap, but that is a value error not a permission error)

Bumped to 19.0.1.0.7.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-20 23:11:37 -04:00

3.3 KiB

1idnamemodel_id:idgroup_id:idperm_readperm_writeperm_createperm_unlink
2access_repair_product_category_userRepair Category User Readmodel_fusion_repair_product_categorygroup_fusion_repairs_user1000
3access_repair_product_category_managerRepair Category Manager Fullmodel_fusion_repair_product_categorygroup_fusion_repairs_manager1111
4access_repair_intake_template_userIntake Template User Readmodel_fusion_repair_intake_templategroup_fusion_repairs_user1000
5access_repair_intake_template_managerIntake Template Manager Fullmodel_fusion_repair_intake_templategroup_fusion_repairs_manager1111
6access_repair_intake_question_userIntake Question User Readmodel_fusion_repair_intake_questiongroup_fusion_repairs_user1000
7access_repair_intake_question_managerIntake Question Manager Fullmodel_fusion_repair_intake_questiongroup_fusion_repairs_manager1111
8access_repair_intake_answer_userIntake Answer User Fullmodel_fusion_repair_intake_answergroup_fusion_repairs_user1110
9access_repair_intake_answer_managerIntake Answer Manager Fullmodel_fusion_repair_intake_answergroup_fusion_repairs_manager1111
10access_repair_intake_answer_tech_portalIntake Answer Technician Readmodel_fusion_repair_intake_answerfusion_tasks.group_field_technician1000
11access_repair_intake_wizard_userIntake Wizard User Fullmodel_fusion_repair_intake_wizardgroup_fusion_repairs_user1111
12access_repair_intake_wizard_equipment_userIntake Wizard Equipment User Fullmodel_fusion_repair_intake_wizard_equipmentgroup_fusion_repairs_user1111
13access_repair_service_catalog_userCatalogue User Readmodel_fusion_repair_service_cataloggroup_fusion_repairs_user1000
14access_repair_service_catalog_managerCatalogue Manager Fullmodel_fusion_repair_service_cataloggroup_fusion_repairs_manager1111
15access_repair_warranty_userWarranty User Readmodel_fusion_repair_warranty_coveragegroup_fusion_repairs_user1000
16access_repair_warranty_managerWarranty Manager Fullmodel_fusion_repair_warranty_coveragegroup_fusion_repairs_manager1111
17access_repair_visit_report_wizard_userVisit Report Wizard Usermodel_fusion_repair_visit_report_wizardgroup_fusion_repairs_user1111
18access_repair_visit_report_wizard_line_userVisit Report Line Usermodel_fusion_repair_visit_report_wizard_linegroup_fusion_repairs_user1111
19access_repair_maintenance_userMaintenance Contract User Readmodel_fusion_repair_maintenance_contractgroup_fusion_repairs_user1000
20access_repair_maintenance_dispatcherMaintenance Contract Dispatchermodel_fusion_repair_maintenance_contractgroup_fusion_repairs_dispatcher1110
21access_repair_maintenance_managerMaintenance Contract Manager Fullmodel_fusion_repair_maintenance_contractgroup_fusion_repairs_manager1111
22access_repair_order_repairs_userRepair Order Repairs User Read/Writerepair.model_repair_ordergroup_fusion_repairs_user1110
23access_repair_order_repairs_managerRepair Order Repairs Manager Fullrepair.model_repair_ordergroup_fusion_repairs_manager1111
24access_technician_task_repairs_userTechnician Task Repairs User Schedulefusion_tasks.model_fusion_technician_taskgroup_fusion_repairs_user1110
25access_technician_task_repairs_managerTechnician Task Repairs Manager Fullfusion_tasks.model_fusion_technician_taskgroup_fusion_repairs_manager1111