summaryrefslogtreecommitdiffstats
path: root/pyload/web/setup_app.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/web/setup_app.py')
-rw-r--r--pyload/web/setup_app.py47
1 files changed, 45 insertions, 2 deletions
diff --git a/pyload/web/setup_app.py b/pyload/web/setup_app.py
index 5163f9cc6..680c5ae89 100644
--- a/pyload/web/setup_app.py
+++ b/pyload/web/setup_app.py
@@ -3,26 +3,69 @@
from time import time
+from pyload.utils import json_dumps
+
from bottle import route, request, response, HTTPError, redirect
from webinterface import PROJECT_DIR, SETUP
from utils import add_json_header
+# returns http error
+def error(code, msg):
+ return HTTPError(code, json_dumps(msg), **dict(response.headers))
+
+
def setup_required(func):
def _view(*args, **kwargs):
+ global timestamp
+
# setup needs to be running
if SETUP is None:
- redirect("/nopermission")
+ return error(404, "Not Found")
+
+ # setup finished
+ if timestamp == 0:
+ return error(409, "Done")
+
+ # setup timed out due to inactivity
+ if timestamp + TIMEOUT * 60 < time():
+ return error(410, "Timeout")
+
+ timestamp = time()
return func(*args, **kwargs)
+
return _view
# setup will close after inactivity
TIMEOUT = 15
timestamp = time()
+
@route("/setup")
@setup_required
def setup():
- pass # TODO
+ add_json_header(response)
+
+ return json_dumps({
+ "system": SETUP.check_system(),
+ "deps": SETUP.check_deps()
+ })
+
+
+@route("/setup_done")
+@setup_required
+def setup_done():
+ global timestamp
+ add_json_header(response)
+
+ SETUP.addUser(
+ request.params['user'],
+ request.params['password']
+ )
+
+ # mark setup as finished
+ timestamp = 0
+
+ return error(409, "Done")