summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntoine Prieels <anp@odoo.com>2019-11-22 09:05:46 +0000
committerAntoine Prieels <anp@odoo.com>2019-11-27 14:15:18 +0000
commit738868a1db9544700c623787aec2f6e408f77b2b (patch)
tree2317ea809e5ca6c1e4b6fd33895c43ca72c4514b
parentad846fcee5b1a548c2b2e1f9ac5cbf131d039042 (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.py22
-rw-r--r--addons/hw_drivers/static/src/js/worker.js2
-rw-r--r--addons/hw_drivers/views/pos_display.html1
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">