fix(shopfloor): Phase B review findings — C1/I1/I2/I3/M1
C1: Add placeholder fp_tablet_cron.xml + fp_tablet_session_event_views.xml
so the module is installable now (real content lands in Phase C task C4
and Phase E task E1 respectively).
I1: test_tablet_pin_auth_manager now passes {} (not self.env) as the
env arg to _check_credentials — matches what request.session.authenticate
provides and what the base implementation expects.
I2: Auth manager role check now uses user_sudo.all_group_ids (transitive)
instead of group_ids (direct) per CLAUDE.md rules 13l + 23. Owner users
who hold Owner directly still match all 5 shop-branch xmlids via the
implication chain.
I3: fp.tablet.session.event gains Python-layer write() + unlink()
overrides that always raise AccessError unless the explicit
fp_tablet_audit_admin_write / fp_tablet_audit_admin_purge context flag
is set. Closes the gap between the model's append-only docstring and
its actual enforcement (ACL-only previously).
M1: Hoisted 'from odoo.exceptions import AccessDenied' to top-of-file
imports next to existing UserError import.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -28,7 +28,7 @@ class TestTabletPinAuthManager(TransactionCase):
|
||||
def _check(self, login, pin):
|
||||
return self.env['res.users'].sudo()._check_credentials(
|
||||
{'type': 'fp_tablet_pin', 'login': login, 'pin': pin},
|
||||
self.env,
|
||||
{},
|
||||
)
|
||||
|
||||
def test_correct_pin_succeeds(self):
|
||||
@@ -72,7 +72,7 @@ class TestTabletPinAuthManager(TransactionCase):
|
||||
self.env['res.users'].sudo()._check_credentials(
|
||||
{'type': 'password', 'login': 'authmgr_tech@example.com',
|
||||
'password': 'wrong'},
|
||||
self.env,
|
||||
{},
|
||||
)
|
||||
except AccessDenied:
|
||||
pass # expected — wrong password
|
||||
|
||||
Reference in New Issue
Block a user