From 451a6dace3d6b7307bf25eee38cd46eff15cac12 Mon Sep 17 00:00:00 2001 From: Antoine Prieels Date: Mon, 24 Aug 2020 12:18:50 +0000 Subject: [PATCH] [FIX] hw_drivers: Traceback in scanner type detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `device_name` and `scanner_name` were defined outside of the scope of the function where they were used in. We move them and try to simplify the logic a bit. closes odoo/odoo#56454 X-original-commit: e59e311578aa0b4539ef27580462a2c2e1dce970 Signed-off-by: Quentin Lejeune (qle) Signed-off-by: Antoine Prieƫls --- .../iot_handlers/drivers/KeyboardUSBDriver.py | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/addons/hw_drivers/iot_handlers/drivers/KeyboardUSBDriver.py b/addons/hw_drivers/iot_handlers/drivers/KeyboardUSBDriver.py index 3d422ef46f5..9425456ca9a 100644 --- a/addons/hw_drivers/iot_handlers/drivers/KeyboardUSBDriver.py +++ b/addons/hw_drivers/iot_handlers/drivers/KeyboardUSBDriver.py @@ -56,11 +56,7 @@ class KeyboardUSBDriver(Driver): if (self.dev.idVendor == device.info.vendor) and (self.dev.idProduct == device.info.product): self.input_device = device - device_name = self._device_name.lower() - is_scanner = self.load_is_scanner() - scanner_name = ['barcode', 'scanner', 'reader'] - - self._set_device_type('scanner') if is_scanner.get('is_scanner') else self._set_device_type() + self._set_device_type('scanner') if self._is_scanner() else self._set_device_type() @classmethod def supported(cls, device): @@ -228,20 +224,18 @@ class KeyboardUSBDriver(Driver): layout = {'layout': 'us'} self._change_keyboard_layout(layout) - def load_is_scanner(self): + def _is_scanner(self): """Read the device type from the saved filed and set it as current type. - If no file or no device type is found we use 'us' by default. + If no file or no device type is found we try to detect it automatically. """ - check_scanner = False - if any(x in device_name for x in scanner_name) or self.dev.interface_protocol == '0': - check_scanner = True + device_name = self._device_name.lower() + scanner_name = ['barcode', 'scanner', 'reader'] + is_scanner = any(x in device_name for x in scanner_name) or self.dev.interface_protocol == '0' file_path = Path.home() / 'odoo-keyboard-is-scanner.conf' if file_path.exists(): data = json.loads(file_path.read_text()) - is_scanner = data.get(self.device_identifier, {'is_scanner': check_scanner}) - else: - is_scanner = {'is_scanner': check_scanner} + is_scanner = data.get(self.device_identifier, {}).get('is_scanner', is_scanner) return is_scanner def _keyboard_input(self, scancode):