[MERGE] better management for python dependencies of the hardware driver modules
bzr revid: fva@openerp.com-20140113105447-4ylwptc139oho2m6
This commit is contained in:
commit
8a43a64250
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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', {
|
||||
|
|
|
@ -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])
|
||||
|
|
Loading…
Reference in New Issue