Fixed a couple of things with the new blueprints, should work now
This commit is contained in:
parent
fe37ab3cd8
commit
8ca3baee04
5 changed files with 99 additions and 106 deletions
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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()))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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"])
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue