From 8ca3baee04c38e45266ca0952dad1173e273d000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sat, 9 Nov 2013 20:26:18 +0100 Subject: [PATCH] Fixed a couple of things with the new blueprints, should work now --- src/octoprint/server/__init__.py | 6 +- src/octoprint/server/ajax/__init__.py | 57 +++++------ src/octoprint/server/ajax/control.py | 1 - src/octoprint/server/ajax/gcodefiles.py | 14 ++- src/octoprint/server/ajax/settings.py | 127 ++++++++++++------------ 5 files changed, 99 insertions(+), 106 deletions(-) diff --git a/src/octoprint/server/__init__.py b/src/octoprint/server/__init__.py index cc0fe3be..a6a34185 100644 --- a/src/octoprint/server/__init__.py +++ b/src/octoprint/server/__init__.py @@ -46,8 +46,6 @@ def index(): except: pass - global debug - return render_template( "index.jinja2", webcamStream=settings().get(["webcam", "stream"]), @@ -111,7 +109,7 @@ class Server(): global eventManager global loginManager global debug - + from tornado.wsgi import WSGIContainer from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop @@ -203,7 +201,7 @@ class Server(): exit("You should not run OctoPrint as root!") def _initSettings(self, configfile, basedir): - s = settings(init=True, basedir=basedir, configfile=configfile) + settings(init=True, basedir=basedir, configfile=configfile) def _initLogging(self, debug): config = { diff --git a/src/octoprint/server/ajax/__init__.py b/src/octoprint/server/ajax/__init__.py index 09db81db..cd921b8f 100644 --- a/src/octoprint/server/ajax/__init__.py +++ b/src/octoprint/server/ajax/__init__.py @@ -11,19 +11,19 @@ from flask.ext.login import login_user, logout_user, current_user from flask.ext.principal import Identity, identity_changed, AnonymousIdentity import octoprint.util as util -import octoprint.users as users -from octoprint.server import restricted_access, SUCCESS, admin_permission, loginManager, principals, userManager -from octoprint.settings import settings, valid_boolean_trues +import octoprint.users +from octoprint.server import restricted_access, SUCCESS, admin_permission, loginManager, principals +from octoprint.settings import settings as s, valid_boolean_trues #~~ init ajax blueprint, including sub modules ajax = Blueprint("ajax", __name__) -import octoprint.server.ajax.control -import octoprint.server.ajax.gcodefiles -import octoprint.server.ajax.settings -import octoprint.server.ajax.timelapse -import octoprint.server.ajax.users +from . import control as ajax_control +from . import gcodefiles as ajax_gcodefiles +from . import settings as ajax_settings +from . import timelapse as ajax_timelapse +from . import users as ajax_users #~~ first run setup @@ -31,28 +31,25 @@ import octoprint.server.ajax.users @ajax.route("/setup", methods=["POST"]) def firstRunSetup(): - global userManager - - if not settings().getBoolean(["server", "firstRun"]): + if not s().getBoolean(["server", "firstRun"]): abort(403) if "ac" in request.values.keys() and request.values["ac"] in valid_boolean_trues and \ "user" in request.values.keys() and "pass1" in request.values.keys() and \ "pass2" in request.values.keys() and request.values["pass1"] == request.values["pass2"]: # configure access control - settings().setBoolean(["accessControl", "enabled"], True) - userManager.addUser(request.values["user"], request.values["pass1"], True, ["user", "admin"]) - settings().setBoolean(["server", "firstRun"], False) + s().setBoolean(["accessControl", "enabled"], True) + octoprint.server.userManager.addUser(request.values["user"], request.values["pass1"], True, ["user", "admin"]) + s().setBoolean(["server", "firstRun"], False) elif "ac" in request.values.keys() and not request.values["ac"] in valid_boolean_trues: # disable access control - settings().setBoolean(["accessControl", "enabled"], False) - settings().setBoolean(["server", "firstRun"], False) + s().setBoolean(["accessControl", "enabled"], False) + s().setBoolean(["server", "firstRun"], False) - userManager = None - loginManager.anonymous_user = users.DummyUser - principals.identity_loaders.appendleft(users.dummy_identity_loader) + loginManager.anonymous_user = octoprint.users.DummyUser + principals.identity_loaders.appendleft(octoprint.users.dummy_identity_loader) - settings().save() + s().save() return jsonify(SUCCESS) @@ -66,7 +63,7 @@ def performSystemAction(): logger = logging.getLogger(__name__) if request.values.has_key("action"): action = request.values["action"] - availableActions = settings().get(["system", "actions"]) + availableActions = s().get(["system", "actions"]) for availableAction in availableActions: if availableAction["action"] == action: logger.info("Performing command: %s" % availableAction["command"]) @@ -86,7 +83,7 @@ def performSystemAction(): @ajax.route("/login", methods=["POST"]) def login(): - if userManager is not None and "user" in request.values.keys() and "pass" in request.values.keys(): + if octoprint.server.userManager is not None and "user" in request.values.keys() and "pass" in request.values.keys(): username = request.values["user"] password = request.values["pass"] @@ -95,9 +92,9 @@ def login(): else: remember = False - user = userManager.findUser(username) + user = octoprint.server.userManager.findUser(username) if user is not None: - if user.check_password(users.UserManager.createPasswordHash(password)): + if user.check_password(octoprint.users.UserManager.createPasswordHash(password)): login_user(user, remember=remember) identity_changed.send(current_app._get_current_object(), identity=Identity(user.get_id())) return jsonify(user.asDict()) @@ -107,19 +104,19 @@ def login(): if user is not None and not user.is_anonymous(): identity_changed.send(current_app._get_current_object(), identity=Identity(user.get_id())) return jsonify(user.asDict()) - elif settings().getBoolean(["accessControl", "autologinLocal"]) \ - and settings().get(["accessControl", "autologinAs"]) is not None \ - and settings().get(["accessControl", "localNetworks"]) is not None: + elif s().getBoolean(["accessControl", "autologinLocal"]) \ + and s().get(["accessControl", "autologinAs"]) is not None \ + and s().get(["accessControl", "localNetworks"]) is not None: - autologinAs = settings().get(["accessControl", "autologinAs"]) + autologinAs = s().get(["accessControl", "autologinAs"]) localNetworks = netaddr.IPSet([]) - for ip in settings().get(["accessControl", "localNetworks"]): + for ip in s().get(["accessControl", "localNetworks"]): localNetworks.add(ip) try: remoteAddr = util.getRemoteAddress(request) if netaddr.IPAddress(remoteAddr) in localNetworks: - user = userManager.findUser(autologinAs) + user = octoprint.server.userManager.findUser(autologinAs) if user is not None: login_user(user) identity_changed.send(current_app._get_current_object(), identity=Identity(user.get_id())) diff --git a/src/octoprint/server/ajax/control.py b/src/octoprint/server/ajax/control.py index bf79b360..efc7e99e 100644 --- a/src/octoprint/server/ajax/control.py +++ b/src/octoprint/server/ajax/control.py @@ -6,7 +6,6 @@ from flask import request, jsonify from octoprint.settings import settings from octoprint.printer import getConnectionOptions - from octoprint.server import printer, restricted_access, SUCCESS from octoprint.server.ajax import ajax diff --git a/src/octoprint/server/ajax/gcodefiles.py b/src/octoprint/server/ajax/gcodefiles.py index c2edb76b..870a996c 100644 --- a/src/octoprint/server/ajax/gcodefiles.py +++ b/src/octoprint/server/ajax/gcodefiles.py @@ -8,8 +8,7 @@ import octoprint.gcodefiles as gcodefiles import octoprint.util as util from octoprint.filemanager.destinations import FileDestinations from octoprint.settings import settings, valid_boolean_trues - -from octoprint.server import printer, gcodeManager, restricted_access, SUCCESS +from octoprint.server import printer, gcodeManager, eventManager, restricted_access, SUCCESS from octoprint.server.util import redirectToTornado from octoprint.server.ajax import ajax @@ -25,11 +24,11 @@ def readGcodeFiles(): if sdFileList is not None: for sdFile in sdFileList: files.append({ - "name": sdFile, - "size": "n/a", - "bytes": 0, - "date": "n/a", - "origin": "sd" + "name": sdFile, + "size": "n/a", + "bytes": 0, + "date": "n/a", + "origin": "sd" }) return jsonify(files=files, free=util.getFormattedSize(util.getFreeBytes(settings().getBaseFolder("uploads")))) @@ -79,7 +78,6 @@ def uploadGcodeFile(): else: printer.selectFile(absFilename, sd, False) - global eventManager eventManager.fire("Upload", filename) return jsonify(files=gcodeManager.getAllFileData(), filename=filename, done=done) diff --git a/src/octoprint/server/ajax/settings.py b/src/octoprint/server/ajax/settings.py index 2eb15f93..a9001898 100644 --- a/src/octoprint/server/ajax/settings.py +++ b/src/octoprint/server/ajax/settings.py @@ -20,73 +20,74 @@ from octoprint.server.ajax import ajax def getSettings(): s = settings() - [movementSpeedX, movementSpeedY, movementSpeedZ, movementSpeedE] = s.get(["printerParameters", "movementSpeed", ["x", "y", "z", "e"]]) + [movementSpeedX, movementSpeedY, movementSpeedZ, movementSpeedE] \ + = s.get(["printerParameters", "movementSpeed", ["x", "y", "z", "e"]]) connectionOptions = getConnectionOptions() return jsonify({ - "api": { - "enabled": s.getBoolean(["api", "enabled"]), - "key": s.get(["api", "key"]) - }, - "appearance": { - "name": s.get(["appearance", "name"]), - "color": s.get(["appearance", "color"]) - }, - "printer": { - "movementSpeedX": movementSpeedX, - "movementSpeedY": movementSpeedY, - "movementSpeedZ": movementSpeedZ, - "movementSpeedE": movementSpeedE, - "invertAxes": s.get(["printerParameters", "invertAxes"]) - }, - "webcam": { - "streamUrl": s.get(["webcam", "stream"]), - "snapshotUrl": s.get(["webcam", "snapshot"]), - "ffmpegPath": s.get(["webcam", "ffmpeg"]), - "bitrate": s.get(["webcam", "bitrate"]), - "watermark": s.getBoolean(["webcam", "watermark"]), - "flipH": s.getBoolean(["webcam", "flipH"]), - "flipV": s.getBoolean(["webcam", "flipV"]) - }, - "feature": { - "gcodeViewer": s.getBoolean(["feature", "gCodeVisualizer"]), - "temperatureGraph": s.getBoolean(["feature", "temperatureGraph"]), - "waitForStart": s.getBoolean(["feature", "waitForStartOnConnect"]), - "alwaysSendChecksum": s.getBoolean(["feature", "alwaysSendChecksum"]), - "sdSupport": s.getBoolean(["feature", "sdSupport"]), - "swallowOkAfterResend": s.getBoolean(["feature", "swallowOkAfterResend"]) - }, - "serial": { - "port": connectionOptions["portPreference"], - "baudrate": connectionOptions["baudratePreference"], - "portOptions": connectionOptions["ports"], - "baudrateOptions": connectionOptions["baudrates"], - "autoconnect": s.getBoolean(["serial", "autoconnect"]), - "timeoutConnection": s.getFloat(["serial", "timeout", "connection"]), - "timeoutDetection": s.getFloat(["serial", "timeout", "detection"]), - "timeoutCommunication": s.getFloat(["serial", "timeout", "communication"]), - "log": s.getBoolean(["serial", "log"]) - }, - "folder": { - "uploads": s.getBaseFolder("uploads"), - "timelapse": s.getBaseFolder("timelapse"), - "timelapseTmp": s.getBaseFolder("timelapse_tmp"), - "logs": s.getBaseFolder("logs") - }, - "temperature": { - "profiles": s.get(["temperature", "profiles"]) - }, - "system": { - "actions": s.get(["system", "actions"]), - "events": s.get(["system", "events"]) - }, - "terminalFilters": s.get(["terminalFilters"]), - "cura": { - "enabled": s.getBoolean(["cura", "enabled"]), - "path": s.get(["cura", "path"]), - "config": s.get(["cura", "config"]) - } + "api": { + "enabled": s.getBoolean(["api", "enabled"]), + "key": s.get(["api", "key"]) + }, + "appearance": { + "name": s.get(["appearance", "name"]), + "color": s.get(["appearance", "color"]) + }, + "printer": { + "movementSpeedX": movementSpeedX, + "movementSpeedY": movementSpeedY, + "movementSpeedZ": movementSpeedZ, + "movementSpeedE": movementSpeedE, + "invertAxes": s.get(["printerParameters", "invertAxes"]) + }, + "webcam": { + "streamUrl": s.get(["webcam", "stream"]), + "snapshotUrl": s.get(["webcam", "snapshot"]), + "ffmpegPath": s.get(["webcam", "ffmpeg"]), + "bitrate": s.get(["webcam", "bitrate"]), + "watermark": s.getBoolean(["webcam", "watermark"]), + "flipH": s.getBoolean(["webcam", "flipH"]), + "flipV": s.getBoolean(["webcam", "flipV"]) + }, + "feature": { + "gcodeViewer": s.getBoolean(["feature", "gCodeVisualizer"]), + "temperatureGraph": s.getBoolean(["feature", "temperatureGraph"]), + "waitForStart": s.getBoolean(["feature", "waitForStartOnConnect"]), + "alwaysSendChecksum": s.getBoolean(["feature", "alwaysSendChecksum"]), + "sdSupport": s.getBoolean(["feature", "sdSupport"]), + "swallowOkAfterResend": s.getBoolean(["feature", "swallowOkAfterResend"]) + }, + "serial": { + "port": connectionOptions["portPreference"], + "baudrate": connectionOptions["baudratePreference"], + "portOptions": connectionOptions["ports"], + "baudrateOptions": connectionOptions["baudrates"], + "autoconnect": s.getBoolean(["serial", "autoconnect"]), + "timeoutConnection": s.getFloat(["serial", "timeout", "connection"]), + "timeoutDetection": s.getFloat(["serial", "timeout", "detection"]), + "timeoutCommunication": s.getFloat(["serial", "timeout", "communication"]), + "log": s.getBoolean(["serial", "log"]) + }, + "folder": { + "uploads": s.getBaseFolder("uploads"), + "timelapse": s.getBaseFolder("timelapse"), + "timelapseTmp": s.getBaseFolder("timelapse_tmp"), + "logs": s.getBaseFolder("logs") + }, + "temperature": { + "profiles": s.get(["temperature", "profiles"]) + }, + "system": { + "actions": s.get(["system", "actions"]), + "events": s.get(["system", "events"]) + }, + "terminalFilters": s.get(["terminalFilters"]), + "cura": { + "enabled": s.getBoolean(["cura", "enabled"]), + "path": s.get(["cura", "path"]), + "config": s.get(["cura", "config"]) + } })