diff --git a/addons/hw_posbox_upgrade/__init__.py b/addons/hw_posbox_upgrade/__init__.py new file mode 100644 index 00000000000..a208bc1c551 --- /dev/null +++ b/addons/hw_posbox_upgrade/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +import controllers + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/hw_posbox_upgrade/__openerp__.py b/addons/hw_posbox_upgrade/__openerp__.py new file mode 100644 index 00000000000..68f81c2079b --- /dev/null +++ b/addons/hw_posbox_upgrade/__openerp__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + + +{ + 'name': 'PosBox Software Upgrader', + 'version': '1.0', + 'category': 'Hardware Drivers', + 'sequence': 6, + 'summary': 'Allows to remotely upgrade the PosBox software', + 'description': """ +PosBox Software Upgrader +======================== + +This module allows to remotely upgrade the PosBox software to a +new version. This module is specific to the PosBox setup and environment +and should not be installed on regular openerp servers. + +""", + 'author': 'OpenERP SA', + 'depends': ['hw_proxy'], + 'test': [ + ], + 'installable': False, + 'auto_install': False, +} + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hw_posbox_upgrade/controllers/__init__.py b/addons/hw_posbox_upgrade/controllers/__init__.py new file mode 100644 index 00000000000..b5f0bcc9ec6 --- /dev/null +++ b/addons/hw_posbox_upgrade/controllers/__init__.py @@ -0,0 +1,3 @@ +import main +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/hw_posbox_upgrade/controllers/main.py b/addons/hw_posbox_upgrade/controllers/main.py new file mode 100644 index 00000000000..b741a7a9102 --- /dev/null +++ b/addons/hw_posbox_upgrade/controllers/main.py @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- +import logging +import os +import time + +import openerp +import openerp.addons.hw_proxy.controllers.main as hw_proxy +import threading +from openerp import http +from openerp.http import request +from openerp.tools.translate import _ + +_logger = logging.getLogger(__name__) + +upgrade_template = """ + + + + OpenERP's PosBox - Software Upgrade + + + + + +

PosBox Software Upgrade

+

+ This tool will help you perform an upgrade of the PosBox's software. + However the preferred method to upgrade the posbox is to flash the sd-card with + the latest image. The upgrade + procedure is explained into to the PosBox manual +

+

+ To upgrade the posbox, click on the upgrade button. The upgrade will take a few minutes. Do not reboot the PosBox during the upgrade. +

+
+ Upgrade +
+ + + +""" + +class PosboxUpgrader(hw_proxy.Proxy): + def __init__(self): + super(PosboxUpgrader,self).__init__() + self.upgrading = threading.Lock() + self.last_upgrade = 0 + + @http.route('/hw_proxy/upgrade', type='http', auth='none', ) + def upgrade(self): + return upgrade_template + + @http.route('/hw_proxy/perform_upgrade', type='http', auth='none') + def perform_upgrade(self): + self.upgrading.acquire() + if time.time() - self.last_upgrade < 30: + self.upgrading.release() + return 'UPTODATE' + else: + os.system('/bin/bash /home/pi/openerp/update.sh') + self.last_upgrade = time.time() + self.upgrading.release() + return 'SUCCESS' + + @http.route('/hw_proxy/perform_restart', type='http', auth='none') + def perform_restart(self): + self.upgrading.acquire() + if time.time() - self.last_upgrade < 30: + self.upgrading.release() + return 'RESTARTED' + else: + os.system('/bin/bash /home/pi/openerp/restart.sh') + self.last_upgrade = time.time() + self.upgrading.release() + return 'SUCCESS' + +