Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
@octoprint.plugin.BlueprintPlugin.route("/outputs", methods=["GET"])
def get_outputs(self):
outputs = []
for rpi_output in self.rpi_outputs:
if rpi_output['output_type'] == 'regular':
index = self.to_int(rpi_output['index_id'])
label = rpi_output['label']
outputs.append(dict(index_id=index, label=label))
return Response(json.dumps(outputs), mimetype='application/json')
@octoprint.plugin.BlueprintPlugin.route("/firmwareprofiles/", methods=["DELETE"])
@octoprint.server.util.flask.restricted_access
@octoprint.server.admin_permission.require(403)
def deleteProfile(self, identifier):
dataFolder = self.get_plugin_data_folder()
file_path = dataFolder + '/profiles/' + identifier
if os.path.isfile(file_path):
os.remove(file_path)
return flask.make_response("", 204)
@octoprint.plugin.BlueprintPlugin.route("/firmwareprofiles", methods=["GET"])
def getProfileList(self):
dataFolder = self.get_plugin_data_folder()
profile_folder = dataFolder + '/profiles'
if not os.path.isdir(profile_folder):
os.mkdir(profile_folder)
_,_,fileList = os.walk(profile_folder).next()
returnDict = {}
for pFile in fileList:
with open(profile_folder +'/'+ pFile, 'r+b') as f:
profile = eval(f.read())['profile']
returnDict[profile['id']] = profile
@octoprint.plugin.BlueprintPlugin.route("/neopixel/", methods=["PATCH"])
@restricted_access
def set_neopixel(self, identifier):
""" set_neopixel method get request from octoprint and send the command to arduino or neopixel"""
if "application/json" not in request.headers["Content-Type"]:
return make_response("expected json", 400)
try:
data = request.json
except BadRequest:
return make_response("malformed request", 400)
if 'red' not in data:
return make_response("missing red attribute", 406)
if 'green' not in data:
return make_response("missing green attribute", 406)
if 'blue' not in data:
return make_response("missing blue attribute", 406)
@octoprint.plugin.BlueprintPlugin.route("/astrobox/identify", methods=["GET"])
def identify(self):
if not self.astroprintCloud or not self.astroprintCloud.bm:
abort(503)
return Response(json.dumps({
'id': self.astroprintCloud.bm.boxId,
'name': self._settings.get(["boxName"]),
'version': self._plugin_version,
'firstRun': True if self._settings.global_get_boolean(["server", "firstRun"]) else None,
'online': True,
})
@octoprint.plugin.BlueprintPlugin.route("/firmwareprofiles/", methods=["PATCH"])
@octoprint.server.util.flask.restricted_access
@octoprint.server.admin_permission.require(403)
def updateProfile(self, identifier):
dataFolder = self.get_plugin_data_folder()
profile_folder = dataFolder + '/profiles'
if not os.path.isdir(profile_folder):
os.mkdir(profile_folder)
profile_id = flask.request.json['profile']['id']
profile_file = open(profile_folder + '/' + profile_id, 'w+b')
profile_file.write(str(flask.request.json))
profile_file.flush()
profile_file.close()
@octoprint.plugin.BlueprintPlugin.route("/deleteDatabase", methods=["DELETE"])
def delete_database(self):
self._databaseManager.recreateDatabase()
return flask.jsonify({
"result": "success"
})
@octoprint.plugin.BlueprintPlugin.route("/changefilament", methods=["DELETE"])
@admin_permission.require(403)
def removefilament(self):
self._settings.set(['filament'], {'name' : None, 'color' : None})
self._settings.save()
self.astroprintCloud.bm.triggerEvent('filamentChanged', {'filament' : {'name' : None, 'color' : None}})
return jsonify({"Filament removed" : True }), 200, {'ContentType':'application/json'}
@octoprint.plugin.BlueprintPlugin.route("/addselectedfile", methods=["GET"])
def addSelectedFile(self):
self._logger.info("PQ: adding selected file: " + self.selected_file)
self._printer.unselect_file()
f = self.selected_file
self.selected_file = ""
return flask.jsonify(filename=f)
@octoprint.plugin.BlueprintPlugin.route("/canceldownload", methods=["POST"])
@admin_permission.require(403)
def canceldownload(self):
id = request.json['id']
self.astroprintCloud.downloadmanager.cancelDownload(id)
return jsonify({"success" : True }), 200, {'ContentType':'application/json'}