From bee7a6d4f340c87595017526d2a40d25f5f81ae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Mon, 13 Jan 2014 10:23:22 +0100 Subject: [PATCH 1/5] [FIX] point_of_sale: removed useless escpos python module & pyusb from hw_proxy module bzr revid: fva@openerp.com-20140113092322-qa8v4qhr4qo2kouc --- addons/hw_escpos/controllers/main.py | 9 +++++++-- addons/hw_proxy/controllers/main.py | 13 ++----------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/addons/hw_escpos/controllers/main.py b/addons/hw_escpos/controllers/main.py index 78ed77a2318..d284d05dfdd 100644 --- a/addons/hw_escpos/controllers/main.py +++ b/addons/hw_escpos/controllers/main.py @@ -14,8 +14,6 @@ import usb.core from openerp.tools.translate import _ from .. import escpos from ..escpos import printer -#import escpos -#import escpos.printer from PIL import Image from openerp import http @@ -29,6 +27,13 @@ class EscposDriver(hw_proxy.Proxy): supported_printers = [ { 'vendor' : 0x04b8, 'product' : 0x0e03, 'name' : 'Epson TM-T20' } ] + + def connected_usb_devices(self,devices): + connected = [] + for device in devices: + if usb.core.find(idVendor=device['vendor'], idProduct=device['product']) != None: + connected.append(device) + return connected def get_escpos_printer(self): printers = self.connected_usb_devices(self.supported_printers) diff --git a/addons/hw_proxy/controllers/main.py b/addons/hw_proxy/controllers/main.py index 967323ae0d6..6ddf94843fd 100644 --- a/addons/hw_proxy/controllers/main.py +++ b/addons/hw_proxy/controllers/main.py @@ -7,30 +7,21 @@ import openerp import time import random import subprocess -import usb.core -import escpos -import escpos.printer import werkzeug import werkzeug.wrappers +_logger = logging.getLogger(__name__) + from openerp import http from openerp.http import request from openerp.addons.web.controllers.main import manifest_list, module_boot, html_template -_logger = logging.getLogger(__name__) class Proxy(http.Controller): def __init__(self): self.scale = 'closed' self.scale_weight = 0.0 - def connected_usb_devices(self,devices): - connected = [] - for device in devices: - if usb.core.find(idVendor=device['vendor'], idProduct=device['product']) != None: - connected.append(device) - return connected - @http.route('/hw_proxy/hello', type='http', auth='admin') def helloajx(self): return request.make_response('ping', { From 59ba2bf90b5c3b45c5d99e4da77c89844df14479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Mon, 13 Jan 2014 10:44:18 +0100 Subject: [PATCH 2/5] [FIX] hw_escpos: added pyusb as an external dependency of the module, to prevent it from being installed without pyusb available bzr revid: fva@openerp.com-20140113094418-m6727xev0kt7bgk8 --- addons/hw_escpos/__openerp__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/hw_escpos/__openerp__.py b/addons/hw_escpos/__openerp__.py index 830b78300ea..d220eaef72e 100644 --- a/addons/hw_escpos/__openerp__.py +++ b/addons/hw_escpos/__openerp__.py @@ -37,6 +37,9 @@ that would need such functionality. """, 'author': 'OpenERP SA', 'depends': ['hw_proxy'], + 'external_dependencies': { + 'python' : ['usb.core'], + }, 'test': [ ], 'installable': True, From b897920b5ac532cee1e150f80d27ecb70f36e6cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Mon, 13 Jan 2014 11:04:18 +0100 Subject: [PATCH 3/5] [FIX] hw_escpos: added pyserial, pyqrcode & PIL as external dependencies of the module, to prevent it from being installed if they aren't available bzr revid: fva@openerp.com-20140113100418-v08gb20ayy7eeogm --- addons/hw_escpos/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hw_escpos/__openerp__.py b/addons/hw_escpos/__openerp__.py index d220eaef72e..f07303275a3 100644 --- a/addons/hw_escpos/__openerp__.py +++ b/addons/hw_escpos/__openerp__.py @@ -38,7 +38,7 @@ that would need such functionality. 'author': 'OpenERP SA', 'depends': ['hw_proxy'], 'external_dependencies': { - 'python' : ['usb.core'], + 'python' : ['usb.core','serial','Image','qrcode'], }, 'test': [ ], From f72044585a6a17dff1ff313a9e635d2353ec5d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Mon, 13 Jan 2014 11:15:20 +0100 Subject: [PATCH 4/5] [FIX] hw_escpos: removed PIL external dependency as it is already required by openerp bzr revid: fva@openerp.com-20140113101520-meh1tswxn2eg11ge --- addons/hw_escpos/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hw_escpos/__openerp__.py b/addons/hw_escpos/__openerp__.py index f07303275a3..127dbd5cf0b 100644 --- a/addons/hw_escpos/__openerp__.py +++ b/addons/hw_escpos/__openerp__.py @@ -38,7 +38,7 @@ that would need such functionality. 'author': 'OpenERP SA', 'depends': ['hw_proxy'], 'external_dependencies': { - 'python' : ['usb.core','serial','Image','qrcode'], + 'python' : ['usb.core','serial','qrcode'], }, 'test': [ ], From 0b580af49bcc63eb38390c3c769ce33d70873efe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Mon, 13 Jan 2014 11:31:48 +0100 Subject: [PATCH 5/5] [FIX] hw_scanner: made evdev dependency optional (obviously it won't work if it's not installed...) bzr revid: fva@openerp.com-20140113103148-2uvhd7de6i9o40kx --- addons/hw_scanner/controllers/main.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/addons/hw_scanner/controllers/main.py b/addons/hw_scanner/controllers/main.py index ec56a733671..69fd29f5128 100644 --- a/addons/hw_scanner/controllers/main.py +++ b/addons/hw_scanner/controllers/main.py @@ -12,7 +12,12 @@ from openerp.http import request _logger = logging.getLogger(__name__) -from evdev import InputDevice, ecodes, categorize, list_devices +try: + import evdev +except ImportError: + _logger.error('OpenERP module hw_scanner depends on the evdev python module') + evdev = None + from select import select class ScannerDriver(hw_proxy.Proxy): @@ -76,13 +81,15 @@ class ScannerDriver(hw_proxy.Proxy): } def get_device(self): + if not evdev: + return None devices = [ device for device in listdir(self.input_dir)] keyboards = [ device for device in devices if 'kbd' in device ] scanners = [ device for device in devices if ('barcode' in device.lower()) or ('scanner' in device.lower()) ] if len(scanners) > 0: - return InputDevice(join(self.input_dir,scanners[0])) + return evdev.InputDevice(join(self.input_dir,scanners[0])) elif len(keyboards) > 0: - return InputDevice(join(self.input_dir,keyboards[0])) + return evdev.InputDevice(join(self.input_dir,keyboards[0])) else: return None @@ -105,9 +112,9 @@ class ScannerDriver(hw_proxy.Proxy): device.ungrab() return '' for event in device.read(): - if event.type == ecodes.EV_KEY: + if event.type == evdev.ecodes.EV_KEY: + #_logger.debug('Evdev Keyboard event %s',evdev.categorize(event)) if event.value == 1: # keydown events - #print categorize(event) if event.code in self.keymap: if shift: barcode.append(self.keymap[event.code][1])