Ejemplo n.º 1
0
        def open_printer(self):
            if self.device:
                return
            try:
                if device_type == 'usb':
                    printers = self.connected_usb_devices()
                    if printers:
                        printer = printers[0]
                        self.interface = printer.get('interface', 0)
                        self.idVendor = printer.get('vendor')
                        self.idProduct = printer.get('product')
                        self.in_ep = printer.get('in_ep', 0x82)
                        self.out_ep = printer.get('out_ep', 0x01)
                        self.timeout = 0
                        self.profile = capabilities.get_profile(None)
                        self.magic = MagicEncode(self, {})
                        self.open()
                        self.vendor_product = '%s_%s' % (self.idVendor,
                                                         self.idProduct)
                elif device_type == 'serial':
                    self.devfile = config.get('escpos_driver',
                                              'serial_device_name')
                    self.baudrate = config.getint('escpos_driver',
                                                  'serial_baudrate')
                    self.bytesize = config.getint('escpos_driver',
                                                  'serial_bytesize')
                    self.timeout = config.getint('escpos_driver',
                                                 'serial_timeout')
                    self.open()

            except Exception as e:
                self.set_status('error', str(e))
Ejemplo n.º 2
0
def serial_options(options):

    values = {}
    values["port"] = options.get(
        "port",
        config.get("serial_driver", "port") or "/dev/ttyS0")

    values["baudrate"] = options.get(
        "baudrate", config.getint("serial_driver", "baudrate"))
    values["bytesize"] = options.get(
        "bytesize", config.getint("serial_driver", "bytesize"))
    values["parity"] = options.get("parity",
                                   config.get("serial_driver", "parity"))
    values["stopbits"] = options.get(
        "stopbits", config.getint("serial_driver", "stopbits"))
    values["rtscts"] = options.get(
        "rtscts", config.getboolean("serial_driver", "rtscts"))
    values["xonxoff"] = options.get(
        "xonxoff", config.getboolean("serial_driver", "xonxoff"))
    values["timeout"] = options.get("timeout",
                                    config.getint("serial_driver", "timeout"))
    values["eol_cr"] = options.get(
        "eol_cr", config.getboolean("serial_driver", "eol_cr"))
    values["eol_lf"] = options.get(
        "eol_lf", config.getboolean("serial_driver", "eol_lf"))
    data = options.get("data", "")

    if values["eol_cr"]:
        data += serial.CR
    if values["eol_lf"]:
        data += serial.LF

    return values, data
Ejemplo n.º 3
0
 def __init__(self, *args, **kwargs):
     self.eprint = None
     self.vendor_product = None
     if device_type == "usb":
         printers = self.connected_usb_devices()
         if printers:
             printer = printers[0]
             idVendor = printer.get("vendor")
             idProduct = printer.get("product")
             kwargs["in_ep"] = printer.get("in_ep", 0x82)
             kwargs["out_ep"] = printer.get("out_ep", 0x01)
             kwargs["timeout"] = 0
             POSDriver.__init__(self, idVendor, idProduct, **kwargs)
     elif device_type == "serial":
         kwargs["devfile"] = config.get("escpos_driver",
                                        "serial_device_name")
         kwargs["baudrate"] = config.getint("escpos_driver",
                                            "serial_baudrate")
         kwargs["bytesize"] = config.getint("escpos_driver",
                                            "serial_bytesize")
         kwargs["timeout"] = config.getint("escpos_driver",
                                           "serial_timeout")
         POSDriver.__init__(self, **kwargs)
     elif device_type == "win32":
         kwargs["printer_name"] = config.get("escpos_driver",
                                             "printer_name")
         POSDriver.__init__(self, **kwargs)
     ThreadDriver.__init__(self, *args, **kwargs)
Ejemplo n.º 4
0
def serial_options(options):

    values = {}
    values['port'] = options.get(
        'port',
        config.get('serial_driver', 'port') or '/dev/ttyS0')

    values['baudrate'] = options.get(
        'baudrate', config.getint('serial_driver', 'baudrate'))
    values['bytesize'] = options.get(
        'bytesize', config.getint('serial_driver', 'bytesize'))
    values['parity'] = options.get('parity',
                                   config.get('serial_driver', 'parity'))
    values['stopbits'] = options.get(
        'stopbits', config.getint('serial_driver', 'stopbits'))
    values['rtscts'] = options.get(
        'rtscts', config.getboolean('serial_driver', 'rtscts'))
    values['xonxoff'] = options.get(
        'xonxoff', config.getboolean('serial_driver', 'xonxoff'))
    values['timeout'] = options.get('timeout',
                                    config.getint('serial_driver', 'timeout'))
    values['eol_cr'] = options.get(
        'eol_cr', config.getboolean('serial_driver', 'eol_cr'))
    values['eol_lf'] = options.get(
        'eol_lf', config.getboolean('serial_driver', 'eol_lf'))
    data = options.get('data', '')

    if values['eol_cr']:
        data += serial.CR
    if values['eol_lf']:
        data += serial.LF

    return values, data
Ejemplo n.º 5
0
def serial_options(options):

    values = {}
    values['port'] = options.get('port',
        config.get('serial_driver', 'port') or '/dev/ttyS0'
    )

    values['baudrate'] = options.get('baudrate',
        config.getint('serial_driver', 'baudrate')
    )
    values['bytesize'] = options.get('bytesize',
        config.getint('serial_driver', 'bytesize')
    )
    values['parity'] = options.get('parity',
        config.get('serial_driver', 'parity')
    )
    values['stopbits'] = options.get('stopbits',
        config.getint('serial_driver', 'stopbits')
    )
    values['rtscts'] = options.get('rtscts',
        config.getboolean('serial_driver', 'rtscts')
    )
    values['xonxoff'] = options.get('xonxoff',
        config.getboolean('serial_driver', 'xonxoff')
    )
    values['timeout'] = options.get('timeout',
        config.getint('serial_driver', 'timeout')
    )
    values['eol_cr'] = options.get('eol_cr',
        config.getboolean('serial_driver', 'eol_cr')
    )
    values['eol_lf'] = options.get('eol_lf',
        config.getboolean('serial_driver', 'eol_lf')
    )
    data = options.get('data','')

    if values['eol_cr']:
        data += serial.CR
    if values['eol_lf']:
        data += serial.LF

    return values, data
Ejemplo n.º 6
0
        def printstatus(self, eprint):
            # <PyWebDriver> Full refactoring of the function to allow
            # localisation and to make more easy the search of the ip

            self.open_printer()
            ip = get_public_ip()

            if not ip:
                msg = _("""ERROR: Could not connect to LAN<br/><br/>"""
                        """Please check that your system is correc-<br/>"""
                        """tly connected with a network cable,<br/>"""
                        """ that the LAN is setup with DHCP, and<br/>"""
                        """that network addresses are available""")
                Layout("<div>" + msg + "</div>").format(self)
                self.cut()
            else:
                addr_lines = []
                for ifaceName in interfaces():
                    addresses = [
                        i["addr"] for i in ifaddresses(ifaceName).setdefault(
                            AF_INET, [{
                                "addr": "No IP addr"
                            }])
                    ]
                    addr_lines.append("<p>" + ",".join(addresses) + " (" +
                                      ifaceName + ")" + "</p>")
                msg = _("""
                       <div align="center">
                            <h4>PyWebDriver Software Status</h4>
                            <br/><br/>
                            <h5>IP Addresses:</h5>
                            %s<br/>
                            %s<br/>
                            Port: %i
                       </div>
                """) % (
                    ip + " (" + _(u"Public") + ")",
                    "".join(addr_lines),
                    config.getint("flask", "port"),
                )
                Layout("<div>" + msg + "</div>").format(self)
                self.close()
Ejemplo n.º 7
0
        def printstatus(self, eprint):
            #<PyWebDriver> Full refactoring of the function to allow
            # localisation and to make more easy the search of the ip

            self.open_printer()
            ip = get_public_ip()

            if not ip:
                msg = _("""ERROR: Could not connect to LAN<br/><br/>"""
                        """Please check that your system is correc-<br/>"""
                        """tly connected with a network cable,<br/>"""
                        """ that the LAN is setup with DHCP, and<br/>"""
                        """that network addresses are available""")
                self.receipt('<div>' + msg + '</div>')
                self.cut()
            else:
                addr_lines = []
                for ifaceName in interfaces():
                    addresses = [
                        i['addr'] for i in ifaddresses(ifaceName).setdefault(
                            AF_INET, [{
                                'addr': 'No IP addr'
                            }])
                    ]
                    addr_lines.append('<p>' + ','.join(addresses) + ' (' +
                                      ifaceName + ')' + '</p>')
                msg = _(u"""
                       <div align="center">
                            <h4>PyWebDriver Software Status</h4>
                            <br/>
                            <h5>IP Addresses:</h5>
                            %s<br/>
                            %s<br/>
                            Port šđč枊ĐČĆŽ: %i
                       </div>
                """) % (
                    ip + ' (' + _(u'Public') + ')',
                    ''.join(addr_lines),
                    config.getint('flask', 'port'),
                )
                self.receipt(msg)
Ejemplo n.º 8
0
        def printstatus(self,eprint):
            #<PyWebDriver> Full refactoring of the function to allow
            # localisation and to make more easy the search of the ip

            self.open_printer()
            ip = get_public_ip()

            if not ip:
                msg = _(
                    """ERROR: Could not connect to LAN<br/><br/>"""
                    """Please check that your system is correc-<br/>"""
                    """tly connected with a network cable,<br/>"""
                    """ that the LAN is setup with DHCP, and<br/>"""
                    """that network addresses are available""")
                self.receipt('<div>'+msg+'</div>')
                self.cut()
            else:
                addr_lines = []
                for ifaceName in interfaces():
                    addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
                    addr_lines.append(
                        '<p>'+','.join(addresses) + ' (' + ifaceName + ')' + '</p>'
                    )
                msg = _(u"""
                       <div align="center">
                            <h4>PyWebDriver Software Status</h4>
                            <br/>
                            <h5>IP Addresses:</h5>
                            %s<br/>
                            %s<br/>
                            Port šđč枊ĐČĆŽ: %i
                       </div>
                """) % (
                    ip + ' (' + _(u'Public') + ')',
                    ''.join(addr_lines),
                    config.getint('flask', 'port'),
                )
                self.receipt(msg)
Ejemplo n.º 9
0
def print_receipt(receipt):
    # Add required information if not provided
    if not receipt.get('precision', False):
        receipt['precision'] = {
            'price': config.getint('odoo', 'precision_price'),
            'money': config.getint('odoo', 'precision_money'),
            'quantity': config.getint('odoo', 'precision_quantity')}
    else:
        if not receipt['precision'].get('price', False):
            receipt['precision']['price'] = config.getint(
                'odoo', 'precision_price')
        if not receipt['precision'].get('money', False):
            receipt['precision']['money'] = config.getint(
                'odoo', 'precision_money')
        if not receipt['precision'].get('quantity', False):
            receipt['precision']['quantity'] = config.getint(
                'odoo', 'precision_quantity')
    drivers['escpos'].push_task('receipt', receipt)
Ejemplo n.º 10
0
def print_receipt(receipt):
    # Add required information if not provided
    if not receipt.get('precision', False):
        receipt['precision'] = {
            'price': config.getint('odoo', 'precision_price'),
            'money': config.getint('odoo', 'precision_money'),
            'quantity': config.getint('odoo', 'precision_quantity')
        }
    else:
        if not receipt['precision'].get('price', False):
            receipt['precision']['price'] = config.getint(
                'odoo', 'precision_price')
        if not receipt['precision'].get('money', False):
            receipt['precision']['money'] = config.getint(
                'odoo', 'precision_money')
        if not receipt['precision'].get('quantity', False):
            receipt['precision']['quantity'] = config.getint(
                'odoo', 'precision_quantity')
    drivers['escpos'].push_task('print_receipt_7', receipt)
Ejemplo n.º 11
0
def print_receipt(receipt):
    # Add required information if not provided
    if not receipt.get("precision", False):
        receipt["precision"] = {
            "price": config.getint("odoo", "precision_price"),
            "money": config.getint("odoo", "precision_money"),
            "quantity": config.getint("odoo", "precision_quantity"),
        }
    else:
        if not receipt["precision"].get("price", False):
            receipt["precision"]["price"] = config.getint(
                "odoo", "precision_price")
        if not receipt["precision"].get("money", False):
            receipt["precision"]["money"] = config.getint(
                "odoo", "precision_money")
        if not receipt["precision"].get("quantity", False):
            receipt["precision"]["quantity"] = config.getint(
                "odoo", "precision_quantity")
    drivers["escpos"].push_task("print_receipt_7", receipt)
Ejemplo n.º 12
0
            # and sends 999.99 to the credit card reader !!!
            # Si I comment the line below -- Alexis
            # telium_driver.push_task('transaction_start', json.dumps(
            #    self.get_payment_info_from_price(999.99, 'card'), sort_keys=True))
            # TODO Improve : Get the real model connected
            if self.status['status'] == 'connected':
                self.vendor_product = 'telium_image'
            else:
                self.vendor_product = False
            return self.status

    driver_config = {}
    if config.get('telium_driver', 'device_name'):
        driver_config['telium_terminal_device_name'] =\
            config.get('telium_driver', 'device_name')
    if config.getint('telium_driver', 'device_rate'):
        driver_config['telium_terminal_device_rate'] =\
            config.getint('telium_driver', 'device_rate')

    telium_driver = TeliumDriver(driver_config)
    drivers['telium'] = telium_driver

    @app.route('/hw_proxy/payment_terminal_transaction_start',
               methods=['POST', 'GET', 'PUT', 'OPTIONS'])
    @cross_origin(headers=['Content-Type'])
    def payment_terminal_transaction_start():
        app.logger.debug('Telium: Call payment_terminal_transaction_start')
        payment_info = request.json['params']['payment_info']
        app.logger.debug('Telium: payment_info=%s', payment_info)
        telium_driver.push_task('transaction_start', payment_info)
        return jsonify(jsonrpc='2.0', result=True)
Ejemplo n.º 13
0
                # So I comment the line below -- Alexis de Lattre
                # display_driver.push_task(
                #    'send_text', [_(u'PyWebDriver'), _(u'PosBox Status')])
                # TODO Improve Me
                # For the time being, it's not possible to know if the display
                # is 'disconnected' in 'error' state
                # Maybe could be possible, improving pyposdisplay library.
            except Exception:
                pass
            return self.status

    driver_config = {}
    if config.get('display_driver', 'device_name'):
        driver_config['customer_display_device_name'] =\
            config.get('display_driver', 'device_name')
    if config.getint('display_driver', 'device_rate'):
        driver_config['customer_display_device_rate'] =\
            config.getint('display_driver', 'device_rate')
    if config.getfloat('display_driver', 'device_timeout'):
        driver_config['customer_display_device_timeout'] =\
            config.getfloat('display_driver', 'device_timeout')
    driver_name = 'bixolon'
    if config.has_option('display_driver', 'driver_name'):
        driver_name = config.get('display_driver', 'driver_name')

    display_driver = DisplayDriver(driver_config, use_driver_name=driver_name)
    drivers['display_driver'] = display_driver


@app.route('/hw_proxy/send_text_customer_display',
           methods=['POST', 'GET', 'PUT', 'OPTIONS'])
Ejemplo n.º 14
0
        # Si I comment the line below -- Alexis
        # telium_driver.push_task('transaction_start', json.dumps(
        #    self.get_payment_info_from_price(999.99, 'card'), sort_keys=True))
        # TODO Improve : Get the real model connected
        if self.status["status"] == "connected":
            self.vendor_product = "telium_image"
        else:
            self.vendor_product = False
        return self.status


driver_config = {}
if config.get("telium_driver", "device_name"):
    driver_config["telium_terminal_device_name"] = config.get(
        "telium_driver", "device_name")
if config.getint("telium_driver", "device_rate"):
    driver_config["telium_terminal_device_rate"] = config.getint(
        "telium_driver", "device_rate")

telium_driver = TeliumDriver(driver_config)
drivers["telium"] = telium_driver


@app.route("/hw_proxy/payment_terminal_transaction_start",
           methods=["POST", "GET", "PUT"])
def payment_terminal_transaction_start():
    app.logger.debug("Telium: Call payment_terminal_transaction_start")
    payment_info = request.json["params"]["payment_info"]
    app.logger.debug("Telium: payment_info=%s", payment_info)
    result = telium_driver.transaction_start(payment_info)
    app.logger.debug("Telium: result of transation_start=%s", result)
Ejemplo n.º 15
0
                # So I comment the line below -- Alexis de Lattre
                # display_driver.push_task(
                #    'send_text', [_(u'PyWebDriver'), _(u'PosBox Status')])
                # TODO Improve Me
                # For the time being, it's not possible to know if the display
                # is 'disconnected' in 'error' state
                # Maybe could be possible, improving pyposdisplay library.
            except Exception:
                pass
            return self.status

    driver_config = {}
    if config.get("display_driver", "device_name"):
        driver_config["customer_display_device_name"] = config.get(
            "display_driver", "device_name")
    if config.getint("display_driver", "device_rate"):
        driver_config["customer_display_device_rate"] = config.getint(
            "display_driver", "device_rate")
    if config.getfloat("display_driver", "device_timeout"):
        driver_config["customer_display_device_timeout"] = config.getfloat(
            "display_driver", "device_timeout")
    driver_name = "bixolon"
    if config.has_option("display_driver", "driver_name"):
        driver_name = config.get("display_driver", "driver_name")

    display_driver = DisplayDriver(driver_config, use_driver_name=driver_name)
    drivers["display_driver"] = display_driver


@app.route("/hw_proxy/send_text_customer_display",
           methods=["POST", "GET", "PUT"])
Ejemplo n.º 16
0
        # and sends 999.99 to the credit card reader !!!
        # Si I comment the line below -- Alexis
        # telium_driver.push_task('transaction_start', json.dumps(
        #    self.get_payment_info_from_price(999.99, 'card'), sort_keys=True))
        # TODO Improve : Get the real model connected
        if self.status['status'] == 'connected':
            self.vendor_product = 'telium_image'
        else:
            self.vendor_product = False
        return self.status

driver_config = {}
if config.get('telium_driver', 'device_name'):
    driver_config['telium_terminal_device_name'] =\
        config.get('telium_driver', 'device_name')
if config.getint('telium_driver', 'device_rate'):
    driver_config['telium_terminal_device_rate'] =\
        config.getint('telium_driver', 'device_rate')

telium_driver = TeliumDriver(driver_config)
drivers['telium'] = telium_driver


@app.route(
    '/hw_proxy/payment_terminal_transaction_start',
    methods=['POST', 'GET', 'PUT', 'OPTIONS'])
@cross_origin(headers=['Content-Type'])
def payment_terminal_transaction_start():
    app.logger.debug('Telium: Call payment_terminal_transaction_start')
    payment_info = request.json['params']['payment_info']
    app.logger.debug('Telium: payment_info=%s', payment_info)
Ejemplo n.º 17
0
                # So I comment the line below -- Alexis de Lattre
                # display_driver.push_task(
                #    'send_text', [_(u'PyWebDriver'), _(u'PosBox Status')])
                # TODO Improve Me
                # For the time being, it's not possible to know if the display
                # is 'disconnected' in 'error' state
                # Maybe could be possible, improving pyposdisplay library.
            except Exception as e:
                pass
            return self.status

    driver_config = {}
    if config.get('display_driver', 'device_name'):
        driver_config['customer_display_device_name'] =\
            config.get('display_driver', 'device_name')
    if config.getint('display_driver', 'device_rate'):
        driver_config['customer_display_device_rate'] =\
            config.getint('display_driver', 'device_rate')
    if config.getint('display_driver', 'device_timeout'):
        driver_config['customer_display_device_timeout'] =\
            config.getint('display_driver', 'device_timeout')

    display_driver = DisplayDriver(driver_config)
    drivers['display_driver'] = display_driver

@app.route(
    '/hw_proxy/send_text_customer_display',
    methods=['POST', 'GET', 'PUT', 'OPTIONS'])
@cross_origin(headers=['Content-Type'])
@check(installed, meta)
def send_text_customer_display():