From 8aee4992778fee5e2f146c4cff8b35e83c7f56b3 Mon Sep 17 00:00:00 2001 From: Antoine Prieels Date: Wed, 20 May 2020 14:12:18 +0000 Subject: [IMP] point_of_sale, pos_*: Enable HTTPS in POS HTTPS had been disabled on SaaS to allow the use of the IoT Box that had no valid SSL certificate. As of V13.0, IoT Boxes connected to Enterprise DBs have a valid certificate. POS can then use HTTPS. Nginx is configured to redirect all requests to `/pos/web` to HTTP, so we change the POS URL to `/pos/ui`, except when using a Six payment terminal as it only works in HTTP. closes odoo/odoo#51625 Taskid: 2191878 Signed-off-by: pimodoo --- addons/point_of_sale/controllers/main.py | 7 +++++-- addons/point_of_sale/models/pos_config.py | 8 +++++++- addons/point_of_sale/models/pos_session.py | 2 +- addons/point_of_sale/static/src/js/debug_manager.js | 2 +- .../point_of_sale/static/tests/tours/Chrome.tour.js | 2 +- .../static/tests/tours/OrderManagementScreen.tour.js | 2 +- .../static/tests/tours/PaymentScreen.tour.js | 2 +- .../static/tests/tours/ProductConfigurator.tour.js | 2 +- .../static/tests/tours/ProductScreen.tour.js | 2 +- .../static/tests/tours/ReceiptScreen.tour.js | 2 +- .../static/tests/tours/TicketScreen.tour.js | 2 +- .../static/tests/tours/point_of_sale.js | 4 ++-- addons/point_of_sale/tests/test_frontend.py | 20 ++++++++++---------- addons/point_of_sale/tests/test_js.py | 4 ++-- addons/pos_hr/static/tests/tours/PosHrTour.js | 2 +- addons/pos_hr/tests/test_frontend.py | 4 ++-- .../static/tests/tours/ControlButtons.tour.js | 2 +- .../static/tests/tours/FloorScreen.tour.js | 2 +- .../static/tests/tours/OrderManagementScreen.tour.js | 2 +- .../static/tests/tours/SplitBillScreen.tour.js | 2 +- .../static/tests/tours/TicketScreen.tour.js | 2 +- .../static/tests/tours/TipScreen.tour.js | 2 +- .../static/tests/tours/pos_restaurant.js | 4 ++-- addons/pos_restaurant/tests/test_frontend.py | 16 ++++++++-------- addons/pos_six/models/__init__.py | 1 + addons/pos_six/models/pos_config.py | 13 +++++++++++++ 26 files changed, 68 insertions(+), 45 deletions(-) create mode 100644 addons/pos_six/models/pos_config.py diff --git a/addons/point_of_sale/controllers/main.py b/addons/point_of_sale/controllers/main.py index c358f427496..402529dc4ba 100644 --- a/addons/point_of_sale/controllers/main.py +++ b/addons/point_of_sale/controllers/main.py @@ -13,12 +13,15 @@ _logger = logging.getLogger(__name__) class PosController(http.Controller): - @http.route('/pos/web', type='http', auth='user') + @http.route(['/pos/web', '/pos/ui'], type='http', auth='user') def pos_web(self, config_id=False, **k): """Open a pos session for the given config. The right pos session will be selected to open, if non is open yet a new session will be created. + /pos/ui and /pos/web both can be used to acces the POS. On the SaaS, + /pos/ui uses HTTPS while /pos/web uses HTTP. + :param debug: The debug mode to load the session in. :type debug: str. :param config_id: id of the config that has to be loaded. @@ -56,7 +59,7 @@ class PosController(http.Controller): } return request.render('point_of_sale.index', qcontext=context) - @http.route('/pos/web/tests', type='http', auth="user") + @http.route('/pos/ui/tests', type='http', auth="user") def test_suite(self, mod=None, **kwargs): domain = [ ('state', '=', 'opened'), diff --git a/addons/point_of_sale/models/pos_config.py b/addons/point_of_sale/models/pos_config.py index dce3b6445b4..a9ecdba6463 100644 --- a/addons/point_of_sale/models/pos_config.py +++ b/addons/point_of_sale/models/pos_config.py @@ -565,6 +565,12 @@ class PosConfig(models.Model): 'params': {'wait': True} } + def _force_http(self): + return False + + def _get_pos_base_url(self): + return '/pos/web' if self._force_http() else '/pos/ui' + # Methods to open the POS def open_ui(self): """Open the pos interface with config_id as an extra argument. @@ -579,7 +585,7 @@ class PosConfig(models.Model): self._validate_fields(set(self._fields) - {"cash_control"}) return { 'type': 'ir.actions.act_url', - 'url': '/pos/web?config_id=%d' % self.id, + 'url': self._get_pos_base_url() + '?config_id=%d' % self.id, 'target': 'self', } diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py index 559aa782592..cf09cf3e2df 100644 --- a/addons/point_of_sale/models/pos_session.py +++ b/addons/point_of_sale/models/pos_session.py @@ -1010,7 +1010,7 @@ class PosSession(models.Model): return { 'type': 'ir.actions.act_url', 'target': 'self', - 'url': '/pos/web?config_id=%d' % self.config_id.id, + 'url': self.config_id._get_pos_base_url() + '?config_id=%d' % self.config_id.id, } def open_cashbox_pos(self): diff --git a/addons/point_of_sale/static/src/js/debug_manager.js b/addons/point_of_sale/static/src/js/debug_manager.js index bd0d45c5472..bcc9f60835f 100644 --- a/addons/point_of_sale/static/src/js/debug_manager.js +++ b/addons/point_of_sale/static/src/js/debug_manager.js @@ -13,7 +13,7 @@ odoo.define('point_of_sale.DebugManager.Backend', function(require) { name: _t('JS Tests'), target: 'new', type: 'ir.actions.act_url', - url: '/pos/web/tests?mod=*', + url: '/pos/ui/tests?mod=*', }); }, }); diff --git a/addons/point_of_sale/static/tests/tours/Chrome.tour.js b/addons/point_of_sale/static/tests/tours/Chrome.tour.js index f00af8fddd7..a1c992dec5b 100644 --- a/addons/point_of_sale/static/tests/tours/Chrome.tour.js +++ b/addons/point_of_sale/static/tests/tours/Chrome.tour.js @@ -99,5 +99,5 @@ odoo.define('point_of_sale.tour.Chrome', function (require) { PaymentScreen.do.clickValidate(); ReceiptScreen.check.isShown(); - Tour.register('ChromeTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('ChromeTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/point_of_sale/static/tests/tours/OrderManagementScreen.tour.js b/addons/point_of_sale/static/tests/tours/OrderManagementScreen.tour.js index e41b4d3b687..cfd6483a9af 100644 --- a/addons/point_of_sale/static/tests/tours/OrderManagementScreen.tour.js +++ b/addons/point_of_sale/static/tests/tours/OrderManagementScreen.tour.js @@ -134,5 +134,5 @@ odoo.define('point_of_sale.tour.OrderManagementScreen', function (require) { OrderManagementScreen.do.closeReceipt(); OrderManagementScreen.check.isNotHidden(); - Tour.register('OrderManagementScreenTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('OrderManagementScreenTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/point_of_sale/static/tests/tours/PaymentScreen.tour.js b/addons/point_of_sale/static/tests/tours/PaymentScreen.tour.js index cba1a4fa3e9..296fbd552bb 100644 --- a/addons/point_of_sale/static/tests/tours/PaymentScreen.tour.js +++ b/addons/point_of_sale/static/tests/tours/PaymentScreen.tour.js @@ -66,5 +66,5 @@ odoo.define('point_of_sale.tour.PaymentScreen', function (require) { PaymentScreen.check.changeIs('0.0'); PaymentScreen.check.validateButtonIsHighlighted(true); - Tour.register('PaymentScreenTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('PaymentScreenTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/point_of_sale/static/tests/tours/ProductConfigurator.tour.js b/addons/point_of_sale/static/tests/tours/ProductConfigurator.tour.js index 7afedbf6091..d3acf388142 100644 --- a/addons/point_of_sale/static/tests/tours/ProductConfigurator.tour.js +++ b/addons/point_of_sale/static/tests/tours/ProductConfigurator.tour.js @@ -62,5 +62,5 @@ odoo.define('point_of_sale.tour.ProductConfigurator', function (require) { ProductConfigurator.do.confirmAttributes(); ProductScreen.check.selectedOrderlineHas('Configurable Chair (Blue, Metal, Leather)', '1.0', '10.0'); - Tour.register('ProductConfiguratorTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('ProductConfiguratorTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/point_of_sale/static/tests/tours/ProductScreen.tour.js b/addons/point_of_sale/static/tests/tours/ProductScreen.tour.js index dc76cd82307..9d3dcc3f022 100644 --- a/addons/point_of_sale/static/tests/tours/ProductScreen.tour.js +++ b/addons/point_of_sale/static/tests/tours/ProductScreen.tour.js @@ -101,5 +101,5 @@ odoo.define('point_of_sale.tour.ProductScreen', function (require) { ProductScreen.do.pressNumpad('Backspace'); ProductScreen.check.orderIsEmpty(); - Tour.register('ProductScreenTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('ProductScreenTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/point_of_sale/static/tests/tours/ReceiptScreen.tour.js b/addons/point_of_sale/static/tests/tours/ReceiptScreen.tour.js index d15f24b5089..2e330a9a9f5 100644 --- a/addons/point_of_sale/static/tests/tours/ReceiptScreen.tour.js +++ b/addons/point_of_sale/static/tests/tours/ReceiptScreen.tour.js @@ -57,5 +57,5 @@ odoo.define('point_of_sale.tour.ReceiptScreen', function (require) { ReceiptScreen.check.totalAmountContains('$ 30.00 + $ 1.00 tip'); ReceiptScreen.do.clickNextOrder(); - Tour.register('ReceiptScreenTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('ReceiptScreenTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/point_of_sale/static/tests/tours/TicketScreen.tour.js b/addons/point_of_sale/static/tests/tours/TicketScreen.tour.js index 4bf05d02fdd..a26c0b36608 100644 --- a/addons/point_of_sale/static/tests/tours/TicketScreen.tour.js +++ b/addons/point_of_sale/static/tests/tours/TicketScreen.tour.js @@ -50,5 +50,5 @@ odoo.define('point_of_sale.tour.TicketScreen', function (require) { TicketScreen.do.search('Receipt Number', '-0003'); TicketScreen.check.nthRowContains(2, 'Receipt'); - Tour.register('TicketScreenTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('TicketScreenTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/point_of_sale/static/tests/tours/point_of_sale.js b/addons/point_of_sale/static/tests/tours/point_of_sale.js index 28312bcd64e..fe2b8e5e663 100644 --- a/addons/point_of_sale/static/tests/tours/point_of_sale.js +++ b/addons/point_of_sale/static/tests/tours/point_of_sale.js @@ -213,7 +213,7 @@ odoo.define('point_of_sale.tour.pricelist', function (require) { run: function() {}, //it's a check, }]); - Tour.register('pos_pricelist', { test: true, url: '/pos/web' }, steps); + Tour.register('pos_pricelist', { test: true, url: '/pos/ui' }, steps); }); odoo.define('point_of_sale.tour.acceptance', function (require) { @@ -430,6 +430,6 @@ odoo.define('point_of_sale.tour.acceptance', function (require) { run: function() {}, //it's a check, }]); - Tour.register('pos_basic_order', { test: true, url: '/pos/web' }, steps); + Tour.register('pos_basic_order', { test: true, url: '/pos/ui' }, steps); }); diff --git a/addons/point_of_sale/tests/test_frontend.py b/addons/point_of_sale/tests/test_frontend.py index a65d4d6bd9e..80a699e7467 100644 --- a/addons/point_of_sale/tests/test_frontend.py +++ b/addons/point_of_sale/tests/test_frontend.py @@ -480,7 +480,7 @@ class TestUi(TestPointOfSaleHttpCommon): 'tip_product_id': self.tip.id, }) - # open a session, the /pos/web controller will redirect to it + # open a session, the /pos/ui controller will redirect to it self.main_pos_config.open_session_cb(check_coa=False) # needed because tests are run before the module is marked as @@ -489,11 +489,11 @@ class TestUi(TestPointOfSaleHttpCommon): # this you end up with js, css but no qweb. self.env['ir.module.module'].search([('name', '=', 'point_of_sale')], limit=1).state = 'installed' - self.start_tour("/pos/web?config_id=%d" % self.main_pos_config.id, 'pos_pricelist', login="admin") - self.start_tour("/pos/web?config_id=%d" % self.main_pos_config.id, 'pos_basic_order', login="admin") - self.start_tour("/pos/web?config_id=%d" % self.main_pos_config.id, 'ProductScreenTour', login="admin") - self.start_tour("/pos/web?config_id=%d" % self.main_pos_config.id, 'PaymentScreenTour', login="admin") - self.start_tour("/pos/web?config_id=%d" % self.main_pos_config.id, 'ReceiptScreenTour', login="admin") + self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'pos_pricelist', login="admin") + self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'pos_basic_order', login="admin") + self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'ProductScreenTour', login="admin") + self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'PaymentScreenTour', login="admin") + self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'ReceiptScreenTour', login="admin") for order in self.env['pos.order'].search([]): self.assertEqual(order.state, 'paid', "Validated order has payment of " + str(order.amount_paid) + " and total of " + str(order.amount_total)) @@ -504,7 +504,7 @@ class TestUi(TestPointOfSaleHttpCommon): def test_02_pos_with_invoiced(self): self.main_pos_config.open_session_cb(check_coa=False) - self.start_tour("/pos/web?config_id=%d" % self.main_pos_config.id, 'ChromeTour', login="admin", step_delay=50) + self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'ChromeTour', login="admin", step_delay=50) n_invoiced = self.env['pos.order'].search_count([('state', '=', 'invoiced')]) n_paid = self.env['pos.order'].search_count([('state', '=', 'paid')]) self.assertEqual(n_invoiced, 1, 'There should be 1 invoiced order.') @@ -513,13 +513,13 @@ class TestUi(TestPointOfSaleHttpCommon): def test_03_order_management(self): self.main_pos_config.write({ 'manage_orders': True, 'module_account': True }) self.main_pos_config.open_session_cb(check_coa=False) - self.start_tour("/pos/web?config_id=%d" % self.main_pos_config.id, 'OrderManagementScreenTour', login="admin", step_delay=50) + self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'OrderManagementScreenTour', login="admin", step_delay=50) def test_04_product_configurator(self): self.main_pos_config.write({ 'product_configurator': True }) self.main_pos_config.open_session_cb(check_coa=False) - self.start_tour("/pos/web?config_id=%d" % self.main_pos_config, 'ProductConfiguratorTour', login="admin", step_delay=50) + self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config, 'ProductConfiguratorTour', login="admin", step_delay=50) def test_05_ticket_screen(self): self.main_pos_config.open_session_cb(check_coa=False) - self.start_tour("/pos/web?config_id=%d" % self.main_pos_config.id, 'TicketScreenTour', login="admin", step_delay=50) + self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'TicketScreenTour', login="admin", step_delay=50) diff --git a/addons/point_of_sale/tests/test_js.py b/addons/point_of_sale/tests/test_js.py index c021075b95a..560e4d402e7 100644 --- a/addons/point_of_sale/tests/test_js.py +++ b/addons/point_of_sale/tests/test_js.py @@ -13,10 +13,10 @@ class WebSuite(odoo.tests.HttpCase): self.main_pos_config = env.ref('point_of_sale.pos_config_main') def test_pos_js(self): - # open a session, the /pos/web controller will redirect to it + # open a session, the /pos/ui controller will redirect to it self.main_pos_config.open_session_cb(check_coa=False) # point_of_sale desktop test suite self.browser_js( - "/pos/web/tests?mod=web&failfast", "", "", login="admin", timeout=1800 + "/pos/ui/tests?mod=web&failfast", "", "", login="admin", timeout=1800 ) diff --git a/addons/pos_hr/static/tests/tours/PosHrTour.js b/addons/pos_hr/static/tests/tours/PosHrTour.js index df4cc2be6da..ca96f846df1 100644 --- a/addons/pos_hr/static/tests/tours/PosHrTour.js +++ b/addons/pos_hr/static/tests/tours/PosHrTour.js @@ -49,5 +49,5 @@ odoo.define('point_of_sale.tour.PosHr', function (require) { NumberPopup.do.clickConfirm(); ProductScreen.check.isShown(); - Tour.register('PosHrTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('PosHrTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/pos_hr/tests/test_frontend.py b/addons/pos_hr/tests/test_frontend.py index 9afcd78897a..70b9fbd7268 100644 --- a/addons/pos_hr/tests/test_frontend.py +++ b/addons/pos_hr/tests/test_frontend.py @@ -43,11 +43,11 @@ class TestPosHrHttpCommon(TestPointOfSaleHttpCommon): @tagged("post_install", "-at_install") class TestUi(TestPosHrHttpCommon): def test_01_pos_hr_tour(self): - # open a session, the /pos/web controller will redirect to it + # open a session, the /pos/ui controller will redirect to it self.main_pos_config.open_session_cb(check_coa=False) self.start_tour( - "/pos/web?config_id=%d" % self.main_pos_config.id, + "/pos/ui?config_id=%d" % self.main_pos_config.id, "PosHrTour", login="admin", ) diff --git a/addons/pos_restaurant/static/tests/tours/ControlButtons.tour.js b/addons/pos_restaurant/static/tests/tours/ControlButtons.tour.js index f26d4f79b29..3b6e499a97a 100644 --- a/addons/pos_restaurant/static/tests/tours/ControlButtons.tour.js +++ b/addons/pos_restaurant/static/tests/tours/ControlButtons.tour.js @@ -44,5 +44,5 @@ odoo.define('pos_restaurant.tour.ControlButtons', function (require) { BillScreen.check.isShown(); BillScreen.do.clickBack(); - Tour.register('ControlButtonsTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('ControlButtonsTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/pos_restaurant/static/tests/tours/FloorScreen.tour.js b/addons/pos_restaurant/static/tests/tours/FloorScreen.tour.js index 93a7a2c8ea6..f4e12080305 100644 --- a/addons/pos_restaurant/static/tests/tours/FloorScreen.tour.js +++ b/addons/pos_restaurant/static/tests/tours/FloorScreen.tour.js @@ -105,5 +105,5 @@ odoo.define('pos_restaurant.tour.FloorScreen', function (require) { FloorScreen.do.clickTable('T1'); Chrome.check.backToFloorTextIs('Second Floor', 'T1'); - Tour.register('FloorScreenTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('FloorScreenTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/pos_restaurant/static/tests/tours/OrderManagementScreen.tour.js b/addons/pos_restaurant/static/tests/tours/OrderManagementScreen.tour.js index 5cedaba0a14..cac1822f4af 100644 --- a/addons/pos_restaurant/static/tests/tours/OrderManagementScreen.tour.js +++ b/addons/pos_restaurant/static/tests/tours/OrderManagementScreen.tour.js @@ -120,5 +120,5 @@ odoo.define('pos_restaurant.tour.OrderManagementScreen', function (require) { ProductScreen.check.totalAmountIs('44'); Chrome.check.backToFloorTextIs('Main Floor', 'T2'); - Tour.register('PosResOrderManagementScreenTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('PosResOrderManagementScreenTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/pos_restaurant/static/tests/tours/SplitBillScreen.tour.js b/addons/pos_restaurant/static/tests/tours/SplitBillScreen.tour.js index cf09ebf0a4b..8b9c0f7d6e0 100644 --- a/addons/pos_restaurant/static/tests/tours/SplitBillScreen.tour.js +++ b/addons/pos_restaurant/static/tests/tours/SplitBillScreen.tour.js @@ -48,5 +48,5 @@ odoo.define('pos_restaurant.tour.SplitBillScreen', function (require) { ProductScreen.do.clickOrderline('Water', '2.0') ProductScreen.do.clickOrderline('Minute Maid', '3.0') - Tour.register('SplitBillScreenTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('SplitBillScreenTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/pos_restaurant/static/tests/tours/TicketScreen.tour.js b/addons/pos_restaurant/static/tests/tours/TicketScreen.tour.js index 790ae060777..6f176d84173 100644 --- a/addons/pos_restaurant/static/tests/tours/TicketScreen.tour.js +++ b/addons/pos_restaurant/static/tests/tours/TicketScreen.tour.js @@ -40,5 +40,5 @@ odoo.define('pos_restaurant.tour.TicketScreen', function (require) { ProductScreen.check.totalAmountIs('2.0'); Chrome.check.backToFloorTextIs('Main Floor', 'T2'); - Tour.register('PosResTicketScreenTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('PosResTicketScreenTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/pos_restaurant/static/tests/tours/TipScreen.tour.js b/addons/pos_restaurant/static/tests/tours/TipScreen.tour.js index 0cbc2d63fad..430c7a2f12c 100644 --- a/addons/pos_restaurant/static/tests/tours/TipScreen.tour.js +++ b/addons/pos_restaurant/static/tests/tours/TipScreen.tour.js @@ -119,5 +119,5 @@ odoo.define('pos_restaurant.tour.TipScreen', function (require) { PaymentScreen.do.clickValidate(); ReceiptScreen.check.isShown(); - Tour.register('PosResTipScreenTour', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('PosResTipScreenTour', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/pos_restaurant/static/tests/tours/pos_restaurant.js b/addons/pos_restaurant/static/tests/tours/pos_restaurant.js index 252e9834e63..03b7c86e572 100644 --- a/addons/pos_restaurant/static/tests/tours/pos_restaurant.js +++ b/addons/pos_restaurant/static/tests/tours/pos_restaurant.js @@ -64,7 +64,7 @@ odoo.define('pos_reataurant.tour.synchronized_table_management', function (requi // There should be 1 synced draft order. FloorScreen.check.orderCountSyncedInTableIs('T5', '1'); - Tour.register('pos_restaurant_sync', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('pos_restaurant_sync', { test: true, url: '/pos/ui' }, getSteps()); startSteps(); @@ -104,5 +104,5 @@ odoo.define('pos_reataurant.tour.synchronized_table_management', function (requi Chrome.do.backToFloor(); FloorScreen.check.orderCountSyncedInTableIs('T4', '1'); - Tour.register('pos_restaurant_sync_second_login', { test: true, url: '/pos/web' }, getSteps()); + Tour.register('pos_restaurant_sync_second_login', { test: true, url: '/pos/ui' }, getSteps()); }); diff --git a/addons/pos_restaurant/tests/test_frontend.py b/addons/pos_restaurant/tests/test_frontend.py index 5c740c4cda2..710e226b678 100644 --- a/addons/pos_restaurant/tests/test_frontend.py +++ b/addons/pos_restaurant/tests/test_frontend.py @@ -158,12 +158,12 @@ class TestFrontend(odoo.tests.HttpCase): self.pos_config.with_user(self.env.ref('base.user_admin')).open_session_cb(check_coa=False) - self.start_tour("/pos/web?config_id=%d" % self.pos_config.id, 'pos_restaurant_sync', login="admin") + self.start_tour("/pos/ui?config_id=%d" % self.pos_config.id, 'pos_restaurant_sync', login="admin") self.assertEqual(1, self.env['pos.order'].search_count([('amount_total', '=', 4.4), ('state', '=', 'draft')])) self.assertEqual(1, self.env['pos.order'].search_count([('amount_total', '=', 4.4), ('state', '=', 'paid')])) - self.start_tour("/pos/web?config_id=%d" % self.pos_config.id, 'pos_restaurant_sync_second_login', login="admin") + self.start_tour("/pos/ui?config_id=%d" % self.pos_config.id, 'pos_restaurant_sync_second_login', login="admin") self.assertEqual(0, self.env['pos.order'].search_count([('amount_total', '=', 4.4), ('state', '=', 'draft')])) self.assertEqual(1, self.env['pos.order'].search_count([('amount_total', '=', 2.2), ('state', '=', 'draft')])) @@ -171,23 +171,23 @@ class TestFrontend(odoo.tests.HttpCase): def test_02_others(self): self.pos_config.with_user(self.env.ref('base.user_admin')).open_session_cb(check_coa=False) - self.start_tour("/pos/web?config_id=%d" % self.pos_config.id, 'SplitBillScreenTour', login="admin") - self.start_tour("/pos/web?config_id=%d" % self.pos_config.id, 'ControlButtonsTour', login="admin") - self.start_tour("/pos/web?config_id=%d" % self.pos_config.id, 'FloorScreenTour', login="admin") + self.start_tour("/pos/ui?config_id=%d" % self.pos_config.id, 'SplitBillScreenTour', login="admin") + self.start_tour("/pos/ui?config_id=%d" % self.pos_config.id, 'ControlButtonsTour', login="admin") + self.start_tour("/pos/ui?config_id=%d" % self.pos_config.id, 'FloorScreenTour', login="admin") def test_03_order_management_integration(self): self.pos_config.write({'manage_orders': True}) self.pos_config.with_user(self.env.ref('base.user_admin')).open_session_cb(check_coa=False) - self.start_tour("/pos/web?config_id=%d" % self.pos_config.id, 'PosResOrderManagementScreenTour', login="admin", step_delay=50) + self.start_tour("/pos/ui?config_id=%d" % self.pos_config.id, 'PosResOrderManagementScreenTour', login="admin", step_delay=50) def test_04_ticket_screen(self): self.pos_config.with_user(self.env.ref('base.user_admin')).open_session_cb(check_coa=False) - self.start_tour("/pos/web?config_id=%d" % self.pos_config.id, 'PosResTicketScreenTour', login="admin", step_delay=50) + self.start_tour("/pos/ui?config_id=%d" % self.pos_config.id, 'PosResTicketScreenTour', login="admin", step_delay=50) def test_05_tip_screen(self): self.pos_config.write({'set_tip_after_payment': True, 'iface_tipproduct': True, 'tip_product_id': self.env.ref('point_of_sale.product_product_tip')}) self.pos_config.with_user(self.env.ref('base.user_admin')).open_session_cb(check_coa=False) - self.start_tour("/pos/web?config_id=%d" % self.pos_config.id, 'PosResTipScreenTour', login="admin", step_delay=50) + self.start_tour("/pos/ui?config_id=%d" % self.pos_config.id, 'PosResTipScreenTour', login="admin", step_delay=50) order1 = self.env['pos.order'].search([('pos_reference', 'ilike', '%-0001')]) order2 = self.env['pos.order'].search([('pos_reference', 'ilike', '%-0002')]) diff --git a/addons/pos_six/models/__init__.py b/addons/pos_six/models/__init__.py index 54035f9421c..77e4db1fdaf 100644 --- a/addons/pos_six/models/__init__.py +++ b/addons/pos_six/models/__init__.py @@ -1,4 +1,5 @@ # coding: utf-8 # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import pos_config from . import pos_payment_method diff --git a/addons/pos_six/models/pos_config.py b/addons/pos_six/models/pos_config.py new file mode 100644 index 00000000000..6d986b2d3ab --- /dev/null +++ b/addons/pos_six/models/pos_config.py @@ -0,0 +1,13 @@ +# coding: utf-8 +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models + + +class PosConfig(models.Model): + _inherit = 'pos.config' + + def _force_http(self): + if self.payment_method_ids.filtered(lambda pm: pm.use_payment_terminal == 'six'): + return True + return super(PosConfig, self)._force_http() -- cgit v1.2.3