check for updates and offer option option to restart

This commit is contained in:
j 2014-08-22 18:42:08 +02:00
commit 0bd359f89d
5 changed files with 109 additions and 14 deletions

View file

@ -10,6 +10,8 @@ import ox
from oxtornado import actions
import settings
import item.api
import user.api
@ -76,3 +78,34 @@ def autocompleteFolder(data):
'items': ox.sorted_strings(folders)
}
actions.register(autocompleteFolder, cache=False)
def getVersion(data):
'''
check if new version is available
'''
response = {
'current': settings.MINOR_VERSION,
'upgrade': False,
}
if not os.path.exists(os.path.join(settings.updates_path, 'release.json')):
return response
if not os.path.exists(os.path.join(settings.config_path, 'release.json')):
return response
with open(os.path.join(settings.updates_path, 'release.json')) as fd:
release = json.load(fd)
current = settings.release['modules']['openmedialibrary']['version']
response['current'] = current
new = release['modules']['openmedialibrary']['version']
response['new'] = new
response['update'] = current < new
return response
actions.register(getVersion, cache=False)
def restart(data):
'''
restart (and upgrade if upgrades are available)
'''
#subprocess.Popen(['./ctl', 'restart'], preexec_fn=os.setpgrp, close_fds=True)
subprocess.Popen(['./ctl', 'restart'], close_fds=True)
return {}
actions.register(restart, cache=False)

View file

@ -4,6 +4,7 @@ from __future__ import division, print_function
import os
import sys
import signal
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
@ -94,14 +95,20 @@ def run():
host = settings.server['address']
url = 'http://%s:%s/' % (host, settings.server['port'])
print('open browser at %s' % url)
def shutdown():
if state.downloads:
state.downloads.join()
if state.tasks:
state.tasks.join()
if state.nodes:
state.nodes.join()
http_server.stop()
signal.signal(signal.SIGTERM, shutdown)
try:
state.main.start()
except:
print('shutting down...')
if state.downloads:
state.downloads.join()
if state.tasks:
state.tasks.join()
if state.nodes:
state.nodes.join()
shutdown()

View file

@ -56,6 +56,7 @@ def check():
old = settings.release['modules']['openmedialibrary']['version']
new = release['modules']['openmedialibrary']['version']
return verify(release) and old < new
return False
def download():
if not os.path.exists(os.path.join(settings.config_path, 'release.json')):