summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorÉloi Rivard <azmeuk@gmail.com>2019-10-10 12:23:06 +0000
committerÉloi Rivard <eloi@yaal.fr>2020-08-28 19:12:19 +0000
commite716e7353c2a1de163a0d0a45a5869bdf06c7eb7 (patch)
tree8e796fc882a38556fd3e9ca0baa535a985707340 /addons
parent33f251b6489455cd7221f2c62dee0400a69784b8 (diff)
[FIX] hw_escpos: support for pyusb>=1.0.0b2
This adds support for pyusb dependency after v1.0.0b2 and brings a chance to rely upon the system pyusb package instead of a custom pip installation. By v1.0.0b2 the public API of the library has changed, and the 'interface' parameter from 'usb.Device.write' method has disappeared. This patch sets or avoids this parameter depending on the pyusb version used. X-original-commit: 312a161cacc7a04c2934a34ffb19cbf607462e69
Diffstat (limited to 'addons')
-rw-r--r--addons/hw_escpos/escpos/printer.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/addons/hw_escpos/escpos/printer.py b/addons/hw_escpos/escpos/printer.py
index 4207919cbc1..4e27f6ba5cf 100644
--- a/addons/hw_escpos/escpos/printer.py
+++ b/addons/hw_escpos/escpos/printer.py
@@ -30,6 +30,14 @@ class Usb(Escpos):
self.interface = interface
self.in_ep = in_ep
self.out_ep = out_ep
+
+ # pyusb dropped the 'interface' parameter from usb.Device.write() at 1.0.0b2
+ # https://github.com/pyusb/pyusb/commit/20cd8c1f79b24082ec999c022b56c3febedc0964#diff-b5a4f98a864952f0f55d569dd14695b7L293
+ if usb.version_info < (1, 0, 0) or (usb.version_info == (1, 0, 0) and usb.version_info[3] in ("a1", "a2", "a3", "b1")):
+ self.write_kwargs = dict(interface=self.interface)
+ else:
+ self.write_kwargs = {}
+
self.open()
def open(self):
@@ -83,8 +91,8 @@ class Usb(Escpos):
def _raw(self, msg):
""" Print any command sent in raw format """
- if len(msg) != self.device.write(self.out_ep, msg, self.interface, timeout=5000):
- self.device.write(self.out_ep, self.errorText, self.interface)
+ if len(msg) != self.device.write(self.out_ep, msg, timeout=5000, **self.write_kwargs):
+ self.device.write(self.out_ep, self.errorText, **self.write_kwargs)
raise TicketNotPrinted()
def __extract_status(self):
@@ -107,13 +115,13 @@ class Usb(Escpos):
'paper' : {},
}
- self.device.write(self.out_ep, DLE_EOT_PRINTER, self.interface)
+ self.device.write(self.out_ep, DLE_EOT_PRINTER, **self.write_kwargs)
printer = self.__extract_status()
- self.device.write(self.out_ep, DLE_EOT_OFFLINE, self.interface)
+ self.device.write(self.out_ep, DLE_EOT_OFFLINE, **self.write_kwargs)
offline = self.__extract_status()
- self.device.write(self.out_ep, DLE_EOT_ERROR, self.interface)
+ self.device.write(self.out_ep, DLE_EOT_ERROR, **self.write_kwargs)
error = self.__extract_status()
- self.device.write(self.out_ep, DLE_EOT_PAPER, self.interface)
+ self.device.write(self.out_ep, DLE_EOT_PAPER, **self.write_kwargs)
paper = self.__extract_status()
status['printer']['status_code'] = printer