[MERGE] better management for python dependencies of the hardware driver modules

bzr revid: fva@openerp.com-20140113105447-4ylwptc139oho2m6
This commit is contained in:
Frédéric van der Essen 2014-01-13 11:54:47 +01:00
commit 8a43a64250
4 changed files with 24 additions and 18 deletions

View File

@ -37,6 +37,9 @@ that would need such functionality.
""",
'author': 'OpenERP SA',
'depends': ['hw_proxy'],
'external_dependencies': {
'python' : ['usb.core','serial','qrcode'],
},
'test': [
],
'installable': True,

View File

@ -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)

View File

@ -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', {

View File

@ -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])