Files
Odoo-Modules/fusion_plating/fusion_plating/security/ir.model.access.csv
gsinghpal 42036c23ab fix(plating-perms): Phase I post-deploy fixes (live entech test catches)
8 distinct bugs caught + fixed while testing the live admin DB on entech
after the migration was approved. Each surfaced a real Odoo 19 gotcha
now codified in CLAUDE.md (rules 13b-13l).

Picker architecture:
- res.users.x_fc_plating_landing_action_id and res.company.x_fc_default_landing_action_id
  now Many2one('ir.actions.actions') instead of ('ir.actions.act_window'),
  so the picker accepts BOTH window actions (Sale Orders / Quotations /
  Process Recipes) AND client actions (Manager Desk / Plant Kanban /
  Quality Dashboard). Picker went from 3 entries to 6.
- x_fc_pickable_landing field moved from the two subclasses to the
  ir.actions.actions base. Single source of truth.
- _render_resolved on the base dispatches to the correct subclass by
  action type.

Non-admin Preferences access:
- Added ACL grant: group_fp_technician (and all higher roles via
  implication) get read on ir.actions.actions. Without this, opening
  Preferences raised AccessError on the picker domain evaluation.
- Removed the accessible_landing_action_ids Many2many compute (failed
  for non-admins because field assignment requires write access on
  the comodel relation, even with sudo'd search). Picker now shows all
  6 entries to all users; resolver falls through gracefully if the
  user picks an action they can't reach.
- res.users SELF_WRITEABLE_FIELDS / SELF_READABLE_FIELDS extended via
  @property + super() (NOT class attribute — Odoo 19 changed the
  pattern). Non-admin users can now save the Preferences dialog with
  plating fields without hitting the standard write ACL.

Migration workflow:
- res.groups.users -> .user_ids (Odoo 19 rename; deprecated alias
  removed). Was crashing _fp_notify_owners and _cron_purge_expired.
- user.message_post -> user.partner_id.message_post (res.users uses
  _inherits delegation which doesn't expose mail.thread methods).
  Was crashing the Owner approval click.

Tablet lock screen:
- /fp/tablet/tiles points at group_fp_technician instead of the old
  group_fusion_plating_operator. Post-migration nobody holds the old
  group directly (only via implication), so res.groups.user_ids on
  the old xmlid returned empty — 'No operators configured' shown
  even with PIN set.
- PIN pad dots dark mode: empty dot now dark gray (#424245), filled
  dot now pure white. Previous version had both at light shades so
  user couldn't see PIN entry progress.
- Lock-screen logo frame dark mode: near-opaque white plate
  (rgba 0.95) so company logos designed for light backgrounds
  render correctly. Previous 0.08 alpha let the dark page bleed
  through.

Pre-deploy collision fix (already committed before deploy but
documented here for completeness):
- pre-migrate.py to rename old configurator's 'Shop Manager' group
  display name before new fp_security_v2.xml loads the new
  group_fp_shop_manager_v2 with the same display name (avoids
  res_groups_name_uniq violation).

Module versions bumped:
  fusion_plating: 19.0.21.1.0 -> 19.0.21.1.2
  fusion_plating_shopfloor: 19.0.32.0.4 -> 19.0.32.0.6

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 10:02:32 -04:00

13 KiB

1idnamemodel_id:idgroup_id:idperm_readperm_writeperm_createperm_unlink
2access_fp_process_category_operatorfp.process.category.operatormodel_fusion_plating_process_categoryfusion_plating.group_fp_technician1000
3access_fp_process_category_managerfp.process.category.managermodel_fusion_plating_process_categoryfusion_plating.group_fp_manager1111
4access_fp_process_type_operatorfp.process.type.operatormodel_fusion_plating_process_typefusion_plating.group_fp_technician1000
5access_fp_process_type_managerfp.process.type.managermodel_fusion_plating_process_typefusion_plating.group_fp_manager1111
6access_fp_bath_parameter_operatorfp.bath.parameter.operatormodel_fusion_plating_bath_parameterfusion_plating.group_fp_technician1000
7access_fp_bath_parameter_managerfp.bath.parameter.managermodel_fusion_plating_bath_parameterfusion_plating.group_fp_manager1111
8access_fp_facility_operatorfp.facility.operatormodel_fusion_plating_facilityfusion_plating.group_fp_technician1000
9access_fp_facility_supervisorfp.facility.supervisormodel_fusion_plating_facilityfusion_plating.group_fp_shop_manager_v21000
10access_fp_facility_managerfp.facility.managermodel_fusion_plating_facilityfusion_plating.group_fp_manager1111
11access_fp_work_center_operatorfp.work.center.operatormodel_fusion_plating_work_centerfusion_plating.group_fp_technician1000
12access_fp_work_center_supervisorfp.work.center.supervisormodel_fusion_plating_work_centerfusion_plating.group_fp_shop_manager_v21100
13access_fp_work_center_managerfp.work.center.managermodel_fusion_plating_work_centerfusion_plating.group_fp_manager1111
14access_fp_tank_operatorfp.tank.operatormodel_fusion_plating_tankfusion_plating.group_fp_technician1000
15access_fp_tank_supervisorfp.tank.supervisormodel_fusion_plating_tankfusion_plating.group_fp_shop_manager_v21100
16access_fp_tank_managerfp.tank.managermodel_fusion_plating_tankfusion_plating.group_fp_manager1111
17access_fp_tank_section_operatorfp.tank.section.operatormodel_fusion_plating_tank_sectionfusion_plating.group_fp_technician1000
18access_fp_tank_section_supervisorfp.tank.section.supervisormodel_fusion_plating_tank_sectionfusion_plating.group_fp_shop_manager_v21100
19access_fp_tank_section_managerfp.tank.section.managermodel_fusion_plating_tank_sectionfusion_plating.group_fp_manager1111
20access_fp_tank_composition_operatorfp.tank.composition.operatormodel_fusion_plating_tank_compositionfusion_plating.group_fp_technician1000
21access_fp_tank_composition_supervisorfp.tank.composition.supervisormodel_fusion_plating_tank_compositionfusion_plating.group_fp_shop_manager_v21110
22access_fp_tank_composition_managerfp.tank.composition.managermodel_fusion_plating_tank_compositionfusion_plating.group_fp_manager1111
23access_fp_tank_comp_ing_operatorfp.tank.composition.ingredient.operatormodel_fusion_plating_tank_composition_ingredientfusion_plating.group_fp_technician1000
24access_fp_tank_comp_ing_supervisorfp.tank.composition.ingredient.supervisormodel_fusion_plating_tank_composition_ingredientfusion_plating.group_fp_shop_manager_v21111
25access_fp_tank_comp_ing_managerfp.tank.composition.ingredient.managermodel_fusion_plating_tank_composition_ingredientfusion_plating.group_fp_manager1111
26access_fp_bath_operatorfp.bath.operatormodel_fusion_plating_bathfusion_plating.group_fp_technician1000
27access_fp_bath_supervisorfp.bath.supervisormodel_fusion_plating_bathfusion_plating.group_fp_shop_manager_v21110
28access_fp_bath_managerfp.bath.managermodel_fusion_plating_bathfusion_plating.group_fp_manager1111
29access_fp_bath_target_operatorfp.bath.target.operatormodel_fusion_plating_bath_targetfusion_plating.group_fp_technician1000
30access_fp_bath_target_supervisorfp.bath.target.supervisormodel_fusion_plating_bath_targetfusion_plating.group_fp_shop_manager_v21110
31access_fp_bath_target_managerfp.bath.target.managermodel_fusion_plating_bath_targetfusion_plating.group_fp_manager1111
32access_fp_bath_log_operatorfp.bath.log.operatormodel_fusion_plating_bath_logfusion_plating.group_fp_technician1110
33access_fp_bath_log_supervisorfp.bath.log.supervisormodel_fusion_plating_bath_logfusion_plating.group_fp_shop_manager_v21110
34access_fp_bath_log_managerfp.bath.log.managermodel_fusion_plating_bath_logfusion_plating.group_fp_manager1111
35access_fp_bath_log_line_operatorfp.bath.log.line.operatormodel_fusion_plating_bath_log_linefusion_plating.group_fp_technician1110
36access_fp_bath_log_line_supervisorfp.bath.log.line.supervisormodel_fusion_plating_bath_log_linefusion_plating.group_fp_shop_manager_v21110
37access_fp_bath_log_line_managerfp.bath.log.line.managermodel_fusion_plating_bath_log_linefusion_plating.group_fp_manager1111
38access_fp_process_node_operatorfp.process.node.operatormodel_fusion_plating_process_nodefusion_plating.group_fp_technician1000
39access_fp_process_node_supervisorfp.process.node.supervisormodel_fusion_plating_process_nodefusion_plating.group_fp_shop_manager_v21110
40access_fp_process_node_managerfp.process.node.managermodel_fusion_plating_process_nodefusion_plating.group_fp_manager1111
41access_fp_process_node_input_operatorfp.process.node.input.operatormodel_fusion_plating_process_node_inputfusion_plating.group_fp_technician1000
42access_fp_process_node_input_supervisorfp.process.node.input.supervisormodel_fusion_plating_process_node_inputfusion_plating.group_fp_shop_manager_v21110
43access_fp_process_node_input_managerfp.process.node.input.managermodel_fusion_plating_process_node_inputfusion_plating.group_fp_manager1111
44access_fp_rack_operatorfp.rack.operatormodel_fusion_plating_rackfusion_plating.group_fp_technician1100
45access_fp_rack_supervisorfp.rack.supervisormodel_fusion_plating_rackfusion_plating.group_fp_shop_manager_v21110
46access_fp_rack_managerfp.rack.managermodel_fusion_plating_rackfusion_plating.group_fp_manager1111
47access_fp_replenishment_rule_operatorfp.replenishment.rule.operatormodel_fusion_plating_bath_replenishment_rulefusion_plating.group_fp_technician1000
48access_fp_replenishment_rule_supervisorfp.replenishment.rule.supervisormodel_fusion_plating_bath_replenishment_rulefusion_plating.group_fp_shop_manager_v21110
49access_fp_replenishment_rule_managerfp.replenishment.rule.managermodel_fusion_plating_bath_replenishment_rulefusion_plating.group_fp_manager1111
50access_fp_replenishment_suggestion_operatorfp.replenishment.suggestion.operatormodel_fusion_plating_bath_replenishment_suggestionfusion_plating.group_fp_technician1110
51access_fp_replenishment_suggestion_supervisorfp.replenishment.suggestion.supervisormodel_fusion_plating_bath_replenishment_suggestionfusion_plating.group_fp_shop_manager_v21110
52access_fp_replenishment_suggestion_managerfp.replenishment.suggestion.managermodel_fusion_plating_bath_replenishment_suggestionfusion_plating.group_fp_manager1111
53access_fp_operator_cert_operatorfp.operator.cert.operatormodel_fp_operator_certificationfusion_plating.group_fp_technician1000
54access_fp_operator_cert_supervisorfp.operator.cert.supervisormodel_fp_operator_certificationfusion_plating.group_fp_shop_manager_v21110
55access_fp_operator_cert_managerfp.operator.cert.managermodel_fp_operator_certificationfusion_plating.group_fp_manager1111
56access_fp_work_centre_operatorfp.work.centre.operatormodel_fp_work_centrefusion_plating.group_fp_technician1000
57access_fp_work_centre_supervisorfp.work.centre.supervisormodel_fp_work_centrefusion_plating.group_fp_shop_manager_v21110
58access_fp_work_centre_managerfp.work.centre.managermodel_fp_work_centrefusion_plating.group_fp_manager1111
59access_fp_job_operatorfp.job.operatormodel_fp_jobfusion_plating.group_fp_technician1100
60access_fp_job_supervisorfp.job.supervisormodel_fp_jobfusion_plating.group_fp_shop_manager_v21110
61access_fp_job_managerfp.job.managermodel_fp_jobfusion_plating.group_fp_manager1111
62access_fp_job_step_operatorfp.job.step.operatormodel_fp_job_stepfusion_plating.group_fp_technician1100
63access_fp_job_step_supervisorfp.job.step.supervisormodel_fp_job_stepfusion_plating.group_fp_shop_manager_v21110
64access_fp_job_step_managerfp.job.step.managermodel_fp_job_stepfusion_plating.group_fp_manager1111
65access_fp_job_step_timelog_operatorfp.job.step.timelog.operatormodel_fp_job_step_timelogfusion_plating.group_fp_technician1110
66access_fp_job_step_timelog_supervisorfp.job.step.timelog.supervisormodel_fp_job_step_timelogfusion_plating.group_fp_shop_manager_v21110
67access_fp_job_step_timelog_managerfp.job.step.timelog.managermodel_fp_job_step_timelogfusion_plating.group_fp_manager1111
68access_fp_work_role_operatorfp.work.role.operatormodel_fp_work_rolefusion_plating.group_fp_technician1000
69access_fp_work_role_managerfp.work.role.managermodel_fp_work_rolefusion_plating.group_fp_manager1111
70access_fp_proficiency_operatorfp.operator.proficiency.operatormodel_fp_operator_proficiencyfusion_plating.group_fp_technician1000
71access_fp_proficiency_supervisorfp.operator.proficiency.supervisormodel_fp_operator_proficiencyfusion_plating.group_fp_shop_manager_v21110
72access_fp_proficiency_managerfp.operator.proficiency.managermodel_fp_operator_proficiencyfusion_plating.group_fp_manager1111
73access_fp_step_kind_operatorfp.step.kind.operatormodel_fp_step_kindfusion_plating.group_fp_technician1000
74access_fp_step_kind_supervisorfp.step.kind.supervisormodel_fp_step_kindfusion_plating.group_fp_shop_manager_v21110
75access_fp_step_kind_managerfp.step.kind.managermodel_fp_step_kindfusion_plating.group_fp_manager1111
76access_fp_step_kind_default_input_operatorfp.step.kind.default.input.operatormodel_fp_step_kind_default_inputfusion_plating.group_fp_technician1000
77access_fp_step_kind_default_input_supervisorfp.step.kind.default.input.supervisormodel_fp_step_kind_default_inputfusion_plating.group_fp_shop_manager_v21111
78access_fp_step_kind_default_input_managerfp.step.kind.default.input.managermodel_fp_step_kind_default_inputfusion_plating.group_fp_manager1111
79access_fp_step_template_operatorfp.step.template.operatormodel_fp_step_templatefusion_plating.group_fp_technician1000
80access_fp_step_template_supervisorfp.step.template.supervisormodel_fp_step_templatefusion_plating.group_fp_shop_manager_v21110
81access_fp_step_template_managerfp.step.template.managermodel_fp_step_templatefusion_plating.group_fp_manager1111
82access_fp_step_template_input_operatorfp.step.template.input.operatormodel_fp_step_template_inputfusion_plating.group_fp_technician1000
83access_fp_step_template_input_supervisorfp.step.template.input.supervisormodel_fp_step_template_inputfusion_plating.group_fp_shop_manager_v21111
84access_fp_step_template_input_managerfp.step.template.input.managermodel_fp_step_template_inputfusion_plating.group_fp_manager1111
85access_fp_step_template_transition_input_operatorfp.step.template.transition.input.operatormodel_fp_step_template_transition_inputfusion_plating.group_fp_technician1000
86access_fp_step_template_transition_input_supervisorfp.step.template.transition.input.supervisormodel_fp_step_template_transition_inputfusion_plating.group_fp_shop_manager_v21111
87access_fp_step_template_transition_input_managerfp.step.template.transition.input.managermodel_fp_step_template_transition_inputfusion_plating.group_fp_manager1111
88access_fp_rack_tag_operatorfp.rack.tag.operatormodel_fp_rack_tagfusion_plating.group_fp_technician1000
89access_fp_rack_tag_supervisorfp.rack.tag.supervisormodel_fp_rack_tagfusion_plating.group_fp_shop_manager_v21111
90access_fp_rack_tag_managerfp.rack.tag.managermodel_fp_rack_tagfusion_plating.group_fp_manager1111
91access_fp_job_step_move_operatorfp.job.step.move.operatormodel_fp_job_step_movefusion_plating.group_fp_technician1110
92access_fp_job_step_move_supervisorfp.job.step.move.supervisormodel_fp_job_step_movefusion_plating.group_fp_shop_manager_v21110
93access_fp_job_step_move_managerfp.job.step.move.managermodel_fp_job_step_movefusion_plating.group_fp_manager1111
94access_fp_job_step_move_input_value_operatorfp.job.step.move.input.value.operatormodel_fp_job_step_move_input_valuefusion_plating.group_fp_technician1110
95access_fp_job_step_move_input_value_supervisorfp.job.step.move.input.value.supervisormodel_fp_job_step_move_input_valuefusion_plating.group_fp_shop_manager_v21110
96access_fp_job_step_move_input_value_managerfp.job.step.move.input.value.managermodel_fp_job_step_move_input_valuefusion_plating.group_fp_manager1111
97access_fp_migration_preview_ownerfp.migration.preview.ownermodel_fp_migration_previewfusion_plating.group_fp_owner1111
98access_fp_migration_preview_line_ownerfp.migration.preview.line.ownermodel_fp_migration_preview_linefusion_plating.group_fp_owner1111
99access_ir_actions_actions_platingir.actions.actions.plating.readbase.model_ir_actions_actionsfusion_plating.group_fp_technician1000