diff options
| author | Antoine Prieels <anp@odoo.com> | 2019-11-22 09:05:46 +0000 |
|---|---|---|
| committer | Antoine Prieels <anp@odoo.com> | 2019-11-27 14:15:18 +0000 |
| commit | 738868a1db9544700c623787aec2f6e408f77b2b (patch) | |
| tree | 2317ea809e5ca6c1e4b6fd33895c43ca72c4514b | |
| parent | ad846fcee5b1a548c2b2e1f9ac5cbf131d039042 (diff) | |
[IMP] hw_drivers: Dual customer display
Customer displays were all using the same URL and therefore could only
show the same products. We now use different URLs per screen.
Two screens connected to the same IoT Box can now display customer
displays from different POS.
closes odoo/odoo#41026
Taskid: 2123511
X-original-commit: 12569b0e7f7a9e447f8df908597131911c5cfef8
Signed-off-by: Antoine Prieƫls <aprieels@users.noreply.github.com>
| -rw-r--r-- | addons/hw_drivers/drivers/DisplayDriver.py | 22 | ||||
| -rw-r--r-- | addons/hw_drivers/static/src/js/worker.js | 2 | ||||
| -rw-r--r-- | addons/hw_drivers/views/pos_display.html | 1 |
3 files changed, 17 insertions, 8 deletions
diff --git a/addons/hw_drivers/drivers/DisplayDriver.py b/addons/hw_drivers/drivers/DisplayDriver.py index 167b485586d..aed483fc5ea 100644 --- a/addons/hw_drivers/drivers/DisplayDriver.py +++ b/addons/hw_drivers/drivers/DisplayDriver.py @@ -71,7 +71,7 @@ class DisplayDriver(Driver): def run(self): while self.device_identifier != 'distant_display': time.sleep(60) - if self.url != 'http://localhost:8069/point_of_sale/display/': + if self.url != 'http://localhost:8069/point_of_sale/display/' + self.device_identifier: # Refresh the page every minute self.call_xdotools('F5') @@ -80,7 +80,7 @@ class DisplayDriver(Driver): os.environ['XAUTHORITY'] = '/run/lightdm/pi/xauthority' firefox_env = os.environ.copy() firefox_env['HOME'] = '/tmp/' + self._x_screen - self.url = url or 'http://localhost:8069/point_of_sale/display/' + self.url = url or 'http://localhost:8069/point_of_sale/display/' + self.device_identifier new_window = subprocess.call(['xdotool', 'search', '--onlyvisible', '--screen', self._x_screen, '--class', 'Firefox']) subprocess.Popen(['firefox', self.url], env=firefox_env) if new_window: @@ -169,9 +169,13 @@ class DisplayController(http.Controller): return {'status': 'OWNER'} return {'status': 'NOWNER'} - @http.route(['/point_of_sale/get_serialized_order'], type='json', auth='none') - def get_serialized_order(self): - display = DisplayDriver.get_default_display() + @http.route(['/point_of_sale/get_serialized_order', '/point_of_sale/get_serialized_order/<string:display_identifier>'], type='json', auth='none') + def get_serialized_order(self, display_identifier=None): + if display_identifier: + display = iot_devices.get(display_identifier) + else: + display = DisplayDriver.get_default_display() + if display: return display.get_serialized_order() return { @@ -179,8 +183,8 @@ class DisplayController(http.Controller): 'error': "No display found", } - @http.route(['/point_of_sale/display'], type='http', auth='none') - def display(self): + @http.route(['/point_of_sale/display', '/point_of_sale/display/<string:display_identifier>'], type='http', auth='none') + def display(self, display_identifier=None): cust_js = None interfaces = ni.interfaces() @@ -200,9 +204,13 @@ class DisplayController(http.Controller): 'icon': 'sitemap' if 'eth' in iface_id else 'wifi', }) + if not display_identifier: + display_identifier = DisplayDriver.get_default_display().device_identifier + return pos_display_template.render({ 'title': "Odoo -- Point of Sale", 'breadcrumb': 'POS Client display', 'cust_js': cust_js, 'display_ifaces': display_ifaces, + 'display_identifier': display_identifier, }) diff --git a/addons/hw_drivers/static/src/js/worker.js b/addons/hw_drivers/static/src/js/worker.js index a485a946588..8de756173a7 100644 --- a/addons/hw_drivers/static/src/js/worker.js +++ b/addons/hw_drivers/static/src/js/worker.js @@ -8,7 +8,7 @@ function longpolling() { $.ajax({ type: 'POST', - url: window.location.origin+'/point_of_sale/get_serialized_order', + url: window.location.origin + '/point_of_sale/get_serialized_order/' + display_identifier, dataType: 'json', beforeSend: function(xhr){xhr.setRequestHeader('Content-Type', 'application/json');}, data: JSON.stringify({jsonrpc: '2.0'}), diff --git a/addons/hw_drivers/views/pos_display.html b/addons/hw_drivers/views/pos_display.html index b7cb5fd52bb..4177462f072 100644 --- a/addons/hw_drivers/views/pos_display.html +++ b/addons/hw_drivers/views/pos_display.html @@ -9,6 +9,7 @@ <script class="origin" type="text/javascript" src="/web/static/lib/bootstrap/js/bootstrap.min.js"></script> <link rel="stylesheet" type="text/css" href="/web/static/lib/fontawesome/css/font-awesome.css"/> <script type="text/javascript" class="origin"> + var display_identifier = '{{ display_identifier }}'; {{ cust_js|safe }} </script> <style class="origin"> |
