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/9] [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/9] [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/9] [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/9] [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/9] [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]) From fb6f7b406d578dadb3cdf23c06929db0e067f8de Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Mon, 13 Jan 2014 11:32:45 +0100 Subject: [PATCH 6/9] [IMP] project: remove duplicated field complete_name (already present in account.analytic.account) bzr revid: mat@openerp.com-20140113103245-md9rl0hsym79abdq --- addons/project/project.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/addons/project/project.py b/addons/project/project.py index ae3d0ad6d9d..ec10dc515a0 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -79,12 +79,6 @@ class project(osv.osv): return super(project, self).search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count) - def _complete_name(self, cr, uid, ids, name, args, context=None): - res = {} - for m in self.browse(cr, uid, ids, context=context): - res[m.id] = (m.parent_id and (m.parent_id.name + '/') or '') + m.name - return res - def onchange_partner_id(self, cr, uid, ids, part=False, context=None): partner_obj = self.pool.get('res.partner') val = {} @@ -234,7 +228,6 @@ class project(osv.osv): _visibility_selection = lambda self, *args, **kwargs: self._get_visibility_selection(*args, **kwargs) _columns = { - 'complete_name': fields.function(_complete_name, string="Project Name", type='char', size=250), 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the project without removing it."), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of Projects."), 'analytic_account_id': fields.many2one('account.analytic.account', 'Contract/Analytic', help="Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc.", ondelete="cascade", required=True), From e0f4c59f11638949a76aada28b48362709d46984 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Mon, 13 Jan 2014 11:55:55 +0100 Subject: [PATCH 7/9] [FIX] account: accounting periods in demo data are no longer opening periods, create a new period_0 as opening period bzr revid: mat@openerp.com-20140113105555-nuefln1bajgwexpd --- addons/account/demo/account_demo.xml | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/addons/account/demo/account_demo.xml b/addons/account/demo/account_demo.xml index 8a450c0b6aa..a6834c954c1 100644 --- a/addons/account/demo/account_demo.xml +++ b/addons/account/demo/account_demo.xml @@ -18,10 +18,18 @@ Fiscal Periods --> + + + + + + + + + - @@ -30,7 +38,6 @@ - @@ -40,7 +47,6 @@ - @@ -49,7 +55,6 @@ - @@ -58,7 +63,6 @@ - @@ -68,7 +72,6 @@ - @@ -76,7 +79,6 @@ - @@ -85,7 +87,6 @@ - @@ -94,7 +95,6 @@ - @@ -103,7 +103,6 @@ - @@ -112,7 +111,6 @@ - @@ -121,7 +119,6 @@ - From 6df89aa77a13976c2cbccfb90f5028a33c24e6c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Mon, 13 Jan 2014 12:17:05 +0100 Subject: [PATCH 8/9] [FIX] adding new python dependencies brought by the hw_escpos module to the install script bzr revid: fva@openerp.com-20140113111705-649g7wknkb10u6re --- setup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.py b/setup.py index 4f4ffe6e505..bdd36d9e5e3 100644 --- a/setup.py +++ b/setup.py @@ -130,12 +130,15 @@ setuptools.setup( 'psycopg2 >= 2.2', 'pydot', 'pyparsing < 2', + 'pyserial', 'python-dateutil < 2', 'python-ldap', # optional 'python-openid', 'pytz', + 'pyusb >= 1.0.0b1', 'pywebdav', 'pyyaml', + 'qrcode', 'reportlab', # windows binary pypi.python.org/pypi/reportlab 'simplejson', 'unittest2', From 1f163f5a78825ca0101d3ed445e163d1433a6a88 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Mon, 13 Jan 2014 13:29:17 +0100 Subject: [PATCH 9/9] [FIX] account: demo opening period, add x in the name bzr revid: mat@openerp.com-20140113122917-zszm18ywrel1ie68 --- addons/account/demo/account_demo.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account/demo/account_demo.xml b/addons/account/demo/account_demo.xml index a6834c954c1..5ee0385f858 100644 --- a/addons/account/demo/account_demo.xml +++ b/addons/account/demo/account_demo.xml @@ -20,7 +20,7 @@ - +