diff --git a/fusion_plating/fusion_plating_shopfloor/__manifest__.py b/fusion_plating/fusion_plating_shopfloor/__manifest__.py index 77f28760..d6466808 100644 --- a/fusion_plating/fusion_plating_shopfloor/__manifest__.py +++ b/fusion_plating/fusion_plating_shopfloor/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Fusion Plating — Shop Floor', - 'version': '19.0.33.1.1', + 'version': '19.0.33.1.2', 'category': 'Manufacturing/Plating', 'summary': 'Shop-floor tablet stations, QR scanning, bake window enforcer, ' 'first-piece inspection gates.', diff --git a/fusion_plating/fusion_plating_shopfloor/controllers/tablet_controller.py b/fusion_plating/fusion_plating_shopfloor/controllers/tablet_controller.py index 0085ba4d..760fe3c4 100644 --- a/fusion_plating/fusion_plating_shopfloor/controllers/tablet_controller.py +++ b/fusion_plating/fusion_plating_shopfloor/controllers/tablet_controller.py @@ -198,9 +198,13 @@ class FpTabletController(http.Controller): # Attempt the real Odoo session swap via the custom auth manager. # session.authenticate validates credentials through _check_credentials, # issues a new sid, sets the cookie, returns the user dict. + # NB: Odoo 19's Session.authenticate signature is (env, credential) — + # passing request.db (a string) raises TypeError: 'str' object is not + # callable on the internal env(user=None, su=False) reset. Pass + # request.env instead. try: request.session.authenticate( - request.db, + request.env, {'type': 'fp_tablet_pin', 'login': target.login, 'pin': pin}, @@ -355,8 +359,9 @@ class FpTabletController(http.Controller): 'needs_kiosk_relogin': True} try: + # Odoo 19 signature: (env, credential) — see unlock_session note. request.session.authenticate( - request.db, + request.env, {'type': 'password', 'login': kiosk_login, 'password': kiosk_password},