Module jumpscale.packages.admin.bottle.admin
Expand source code
from bottle import Bottle, request, HTTPResponse, static_file
from jumpscale.loader import j
from jumpscale.packages.auth.bottle.auth import login_required, get_user_info
from jumpscale.packages.admin.bottle.models import UserEntry
from jumpscale.core.base import StoredFactory
app = Bottle()
@app.route("/api/allowed", method="GET")
@login_required
def allowed():
user_factory = StoredFactory(UserEntry)
user_info = j.data.serializers.json.loads(get_user_info())
tname = user_info["username"]
instances = user_factory.list_all()
for name in instances:
user_entry = user_factory.get(name)
if user_entry.tname == tname and user_entry.has_agreed:
return j.data.serializers.json.dumps({"allowed": True})
return j.data.serializers.json.dumps({"allowed": False})
@app.route("/api/accept", method="GET")
@login_required
def accept():
user_factory = StoredFactory(UserEntry)
user_info = j.data.serializers.json.loads(get_user_info())
tname = user_info["username"]
user_entry = user_factory.get(f"{tname.replace('.3bot', '')}")
if user_entry.has_agreed:
return HTTPResponse(
j.data.serializers.json.dumps({"allowed": True}), status=200, headers={"Content-Type": "application/json"}
)
else:
user_entry.has_agreed = True
user_entry.tname = tname
user_entry.save()
return HTTPResponse(
j.data.serializers.json.dumps({"allowed": True}), status=201, headers={"Content-Type": "application/json"}
)
@app.route("/api/announced", method="GET")
@login_required
def announced():
result = bool(j.config.get("ANNOUNCED"))
return HTTPResponse(
j.data.serializers.json.dumps({"announced": result}), status=200, headers={"Content-Type": "application/json"}
)
@app.route("/api/announce", method="GET")
@login_required
def announce():
j.config.set("ANNOUNCED", True)
return HTTPResponse(
j.data.serializers.json.dumps({"announced": True}), status=200, headers={"Content-Type": "application/json"}
)
@app.route("/api/heartbeat", method="GET")
def heartbeat():
return HTTPResponse(status=200)
@app.route("/api/export")
@login_required
def export():
filename = j.tools.export.export_threebot_state()
exporttime = j.data.time.now().format("YYYY-MM-DDTHH-mm-ssZZ")
return static_file(
j.sals.fs.basename(filename),
root=j.sals.fs.dirname(filename),
download=f"export-{exporttime}.tar.gz",
mimetype="application/gzip",
)
Functions
def accept()
-
Expand source code
@app.route("/api/accept", method="GET") @login_required def accept(): user_factory = StoredFactory(UserEntry) user_info = j.data.serializers.json.loads(get_user_info()) tname = user_info["username"] user_entry = user_factory.get(f"{tname.replace('.3bot', '')}") if user_entry.has_agreed: return HTTPResponse( j.data.serializers.json.dumps({"allowed": True}), status=200, headers={"Content-Type": "application/json"} ) else: user_entry.has_agreed = True user_entry.tname = tname user_entry.save() return HTTPResponse( j.data.serializers.json.dumps({"allowed": True}), status=201, headers={"Content-Type": "application/json"} )
def allowed()
-
Expand source code
@app.route("/api/allowed", method="GET") @login_required def allowed(): user_factory = StoredFactory(UserEntry) user_info = j.data.serializers.json.loads(get_user_info()) tname = user_info["username"] instances = user_factory.list_all() for name in instances: user_entry = user_factory.get(name) if user_entry.tname == tname and user_entry.has_agreed: return j.data.serializers.json.dumps({"allowed": True}) return j.data.serializers.json.dumps({"allowed": False})
def announce()
-
Expand source code
@app.route("/api/announce", method="GET") @login_required def announce(): j.config.set("ANNOUNCED", True) return HTTPResponse( j.data.serializers.json.dumps({"announced": True}), status=200, headers={"Content-Type": "application/json"} )
def announced()
-
Expand source code
@app.route("/api/announced", method="GET") @login_required def announced(): result = bool(j.config.get("ANNOUNCED")) return HTTPResponse( j.data.serializers.json.dumps({"announced": result}), status=200, headers={"Content-Type": "application/json"} )
def export()
-
Expand source code
@app.route("/api/export") @login_required def export(): filename = j.tools.export.export_threebot_state() exporttime = j.data.time.now().format("YYYY-MM-DDTHH-mm-ssZZ") return static_file( j.sals.fs.basename(filename), root=j.sals.fs.dirname(filename), download=f"export-{exporttime}.tar.gz", mimetype="application/gzip", )
def heartbeat()
-
Expand source code
@app.route("/api/heartbeat", method="GET") def heartbeat(): return HTTPResponse(status=200)