diff options
| author | Atul Patel (OpenERP) <atp@tinyerp.com> | 2014-02-18 11:26:18 +0530 |
|---|---|---|
| committer | Atul Patel (OpenERP) <atp@tinyerp.com> | 2014-02-18 11:26:18 +0530 |
| commit | 33b99c8a0737e08e6a243e41bb455d3ab7e6c851 (patch) | |
| tree | a1db52bfbeecf0c6fd9096604b7ec4540bb04197 /addons/hw_proxy/controllers | |
| parent | caa3510ea434e10c32dcbc134f9c74b2b9f18b2a (diff) | |
| parent | aa0eac1257b97c1be693e8a804fec6ecbf2bb22f (diff) | |
[MERGE]: Merged with addons
bzr revid: atp@tinyerp.com-20140218055618-r36w29vat7zig9ar
Diffstat (limited to 'addons/hw_proxy/controllers')
| -rw-r--r-- | addons/hw_proxy/controllers/__init__.py | 3 | ||||
| -rw-r--r-- | addons/hw_proxy/controllers/main.py | 199 |
2 files changed, 202 insertions, 0 deletions
diff --git a/addons/hw_proxy/controllers/__init__.py b/addons/hw_proxy/controllers/__init__.py new file mode 100644 index 00000000000..b5f0bcc9ec6 --- /dev/null +++ b/addons/hw_proxy/controllers/__init__.py @@ -0,0 +1,3 @@ +import main +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/hw_proxy/controllers/main.py b/addons/hw_proxy/controllers/main.py new file mode 100644 index 00000000000..5293abd1f25 --- /dev/null +++ b/addons/hw_proxy/controllers/main.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +import logging +import simplejson +import os +import os.path +import openerp +import time +import random +import subprocess +import simplejson +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 + + +# drivers modules must add to drivers an object with a get_status() method +# so that 'status' can return the status of all active drivers +drivers = {} + +class Proxy(http.Controller): + def __init__(self): + self.scale = 'closed' + self.scale_weight = 0.0 + + def get_status(self): + statuses = {} + for driver in drivers: + statuses[driver] = drivers[driver].get_status() + return statuses + + @http.route('/hw_proxy/hello', type='http', auth='none', cors='*') + def hello(self): + return "ping" + + @http.route('/hw_proxy/handshake', type='json', auth='none', cors='*') + def handshake(self): + return True + + @http.route('/hw_proxy/status', type='http', auth='none', cors='*') + def status_http(self): + resp = '<html>\n<body>\n<h1>Hardware Proxy Status</h1>\n' + statuses = self.get_status() + for driver in statuses: + + status = statuses[driver] + + if status['status'] == 'connecting': + color = 'black' + elif status['status'] == 'connected': + color = 'green' + else: + color = 'red' + + resp += "<h2 style='color:"+color+";'>"+driver+' : '+status['status']+"</h2>\n" + resp += "<ul>\n" + for msg in status['messages']: + resp += '<li>'+msg+'</li>\n' + resp += "</ul>\n" + resp += "<script>\n\tsetTimeout(function(){window.location.reload();},30000);\n</script>\n</body>\n</html>\n\n" + + return request.make_response(resp,{ + 'Cache-Control': 'no-cache', + 'Content-Type': 'text/html; charset=utf-8', + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'GET', + }) + + @http.route('/hw_proxy/status_json', type='json', auth='none', cors='*') + def status_json(self): + return self.get_status() + + @http.route('/hw_proxy/scan_item_success', type='json', auth='none', cors='*') + def scan_item_success(self, ean): + """ + A product has been scanned with success + """ + print 'scan_item_success: ' + str(ean) + + @http.route('/hw_proxy/scan_item_error_unrecognized', type='json', auth='none', cors='*') + def scan_item_error_unrecognized(self, ean): + """ + A product has been scanned without success + """ + print 'scan_item_error_unrecognized: ' + str(ean) + + @http.route('/hw_proxy/help_needed', type='json', auth='none', cors='*') + def help_needed(self): + """ + The user wants an help (ex: light is on) + """ + print "help_needed" + + @http.route('/hw_proxy/help_canceled', type='json', auth='none', cors='*') + def help_canceled(self): + """ + The user stops the help request + """ + print "help_canceled" + + @http.route('/hw_proxy/weighting_start', type='json', auth='none', cors='*') + def weighting_start(self): + if self.scale == 'closed': + print "Opening (Fake) Connection to Scale..." + self.scale = 'open' + self.scale_weight = 0.0 + time.sleep(0.1) + print "... Scale Open." + else: + print "WARNING: Scale already Connected !!!" + + @http.route('/hw_proxy/weighting_read_kg', type='json', auth='none', cors='*') + def weighting_read_kg(self): + if self.scale == 'open': + print "Reading Scale..." + time.sleep(0.025) + self.scale_weight += 0.01 + print "... Done." + return self.scale_weight + else: + print "WARNING: Reading closed scale !!!" + return 0.0 + + @http.route('/hw_proxy/weighting_end', type='json', auth='none', cors='*') + def weighting_end(self): + if self.scale == 'open': + print "Closing Connection to Scale ..." + self.scale = 'closed' + self.scale_weight = 0.0 + time.sleep(0.1) + print "... Scale Closed." + else: + print "WARNING: Scale already Closed !!!" + + @http.route('/hw_proxy/payment_request', type='json', auth='none', cors='*') + def payment_request(self, price): + """ + The PoS will activate the method payment + """ + print "payment_request: price:"+str(price) + return 'ok' + + @http.route('/hw_proxy/payment_status', type='json', auth='none', cors='*') + def payment_status(self): + print "payment_status" + return { 'status':'waiting' } + + @http.route('/hw_proxy/payment_cancel', type='json', auth='none', cors='*') + def payment_cancel(self): + print "payment_cancel" + + @http.route('/hw_proxy/transaction_start', type='json', auth='none', cors='*') + def transaction_start(self): + print 'transaction_start' + + @http.route('/hw_proxy/transaction_end', type='json', auth='none', cors='*') + def transaction_end(self): + print 'transaction_end' + + @http.route('/hw_proxy/cashier_mode_activated', type='json', auth='none', cors='*') + def cashier_mode_activated(self): + print 'cashier_mode_activated' + + @http.route('/hw_proxy/cashier_mode_deactivated', type='json', auth='none', cors='*') + def cashier_mode_deactivated(self): + print 'cashier_mode_deactivated' + + @http.route('/hw_proxy/open_cashbox', type='json', auth='none', cors='*') + def open_cashbox(self): + print 'open_cashbox' + + @http.route('/hw_proxy/print_receipt', type='json', auth='none', cors='*') + def print_receipt(self, receipt): + print 'print_receipt' + str(receipt) + + @http.route('/hw_proxy/is_scanner_connected', type='json', auth='none', cors='*') + def print_receipt(self, receipt): + print 'is_scanner_connected?' + return False + + @http.route('/hw_proxy/scanner', type='json', auth='none', cors='*') + def print_receipt(self, receipt): + print 'scanner' + time.sleep(10) + return '' + + @http.route('/hw_proxy/log', type='json', auth='none', cors='*') + def log(self, arguments): + _logger.info(' '.join(str(v) for v in arguments)) + + @http.route('/hw_proxy/print_pdf_invoice', type='json', auth='none', cors='*') + def print_pdf_invoice(self, pdfinvoice): + print 'print_pdf_invoice' + str(pdfinvoice) + + |
