[FIX] hw_drivers: Restart Odoo after IoT has connected

When the route '/hw_drivers/box/connect' is called to connect an IoT Box to a DB,
the checkout on the branch of the DB is not performed and incompatibility can occur.

With this fix we relaunch Odoo via a parallel thread in order to be able to respond to the request...

closes odoo/odoo#52513

X-original-commit: 9aca7c464cef492c495a0c72d870b7075187dc63
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
This commit is contained in:
lejeune quentin
2020-06-05 14:00:06 +00:00
parent 82afffac89
commit 9553871312
2 changed files with 19 additions and 2 deletions
+1 -2
View File
@@ -80,10 +80,9 @@ class StatusController(http.Controller):
helpers.add_credential(db_uuid, enterprise_code)
try:
subprocess.check_call([get_resource_path('point_of_sale', 'tools/posbox/configuration/connect_to_server.sh'), url, '', token, 'noreboot'])
helpers.check_certificate()
m.send_alldevices()
m.load_iot_handlers()
image = get_resource_path('hw_drivers', 'static/img', 'True.jpg')
helpers.odoo_restart(3)
except subprocess.CalledProcessError as e:
_logger.error('A error encountered : %s ' % e.output)
if os.path.isfile(image):
+18
View File
@@ -12,6 +12,8 @@ import logging
import os
import subprocess
import zipfile
from threading import Thread
import time
from odoo import _
from odoo.modules.module import get_resource_path
@@ -22,6 +24,18 @@ _logger = logging.getLogger(__name__)
# Helper
#----------------------------------------------------------
class IoTRestart(Thread):
"""
Thread to restart odoo server in IoT Box when we must return a answer before
"""
def __init__(self, delay):
Thread.__init__(self)
self.delay = delay
def run(self):
time.sleep(self.delay)
subprocess.check_call(["sudo", "service", "odoo", "restart"])
def access_point():
return get_ip() == '10.11.12.1'
@@ -218,6 +232,10 @@ def download_iot_handlers(auto=True):
_logger.error('Could not reach configured server')
_logger.error('A error encountered : %s ' % e)
def odoo_restart(delay):
IR = IoTRestart(delay)
IR.start()
def read_file_first_line(filename):
path = Path.home() / filename
path = Path('/home/pi/' + filename)