def getFileData(self, filename): filename = self._getBasicFilename(filename) absolutePath = self.getAbsolutePath(filename) if absolutePath is None: return None statResult = os.stat(absolutePath) fileData = { "name": filename, "size": util.getFormattedSize(statResult.st_size), "bytes": statResult.st_size, "date": util.getFormattedDateTime(datetime.datetime.fromtimestamp(statResult.st_ctime)), } # enrich with additional metadata from analysis if available if filename in self._metadata.keys(): for key in self._metadata[filename].keys(): if key == "prints": val = self._metadata[filename][key] formattedLast = None if val["last"] is not None: formattedLast = { "date": util.getFormattedDateTime(datetime.datetime.fromtimestamp(val["last"]["date"])), "success": val["last"]["success"], } formattedPrints = {"success": val["success"], "failure": val["failure"], "last": formattedLast} fileData["prints"] = formattedPrints else: fileData[key] = self._metadata[filename][key] return fileData
def _setJobData(self, filename, filesize, sd): if filename is not None: self._selectedFile = { "filename": filename, "filesize": filesize, "sd": sd } else: self._selectedFile = None formattedFilename = None formattedFilesize = None estimatedPrintTime = None fileMTime = None filament = None if filename: formattedFilename = os.path.basename(filename) # Use a string for mtime because it could be float and the # javascript needs to exact match if not sd: fileMTime = str(os.stat(filename).st_mtime) if filesize: formattedFilesize = util.getFormattedSize(filesize) fileData = self._gcodeManager.getFileData(filename) if fileData is not None and "gcodeAnalysis" in fileData.keys(): if "estimatedPrintTime" in fileData["gcodeAnalysis"].keys(): estimatedPrintTime = fileData["gcodeAnalysis"]["estimatedPrintTime"] if "filament" in fileData["gcodeAnalysis"].keys(): filament = fileData["gcodeAnalysis"]["filament"] self._stateMonitor.setJobData({"filename": formattedFilename, "filesize": formattedFilesize, "estimatedPrintTime": estimatedPrintTime, "filament": filament, "sd": sd, "mtime": fileMTime})
def getFileData(self, filename): filename = self._getBasicFilename(filename) absolutePath = self.getAbsolutePath(filename) if absolutePath is None: return None statResult = os.stat(absolutePath) fileData = { "name": filename, "size": util.getFormattedSize(statResult.st_size), "bytes": statResult.st_size, "date": util.getFormattedDateTime(datetime.datetime.fromtimestamp(statResult.st_ctime)) } # enrich with additional metadata from analysis if available if filename in self._metadata.keys(): for key in self._metadata[filename].keys(): if key == "prints": val = self._metadata[filename][key] formattedLast = None if val["last"] is not None: formattedLast = { "date": util.getFormattedDateTime(datetime.datetime.fromtimestamp(val["last"]["date"])), "success": val["last"]["success"] } formattedPrints = { "success": val["success"], "failure": val["failure"], "last": formattedLast } fileData["prints"] = formattedPrints else: fileData[key] = self._metadata[filename][key] return fileData
def _setProgressData(self, progress, filepos, printTime, printTimeLeft): self._progress = progress self._printTime = printTime self._printTimeLeft = printTimeLeft formattedPrintTime = None if self._printTime: formattedPrintTime = util.getFormattedTimeDelta(datetime.timedelta(seconds=self._printTime)) formattedPrintTimeLeft = None if self._printTimeLeft: formattedPrintTimeLeft = util.getFormattedTimeDelta(datetime.timedelta(minutes=self._printTimeLeft)) formattedFilePos = None if filepos: formattedFilePos = util.getFormattedSize(filepos) self._stateMonitor.setProgress( { "progress": self._progress, "filepos": formattedFilePos, "printTime": formattedPrintTime, "printTimeLeft": formattedPrintTimeLeft, } )
def _setJobData(self, filename, filesize, sd): if filename is not None: self._selectedFile = { "filename": filename, "filesize": filesize, "sd": sd } else: self._selectedFile = None formattedFilename = None formattedFilesize = None estimatedPrintTime = None filament = None if filename: formattedFilename = os.path.basename(filename) if filesize: formattedFilesize = util.getFormattedSize(filesize) fileData = self._gcodeManager.getFileData(filename) if fileData is not None and "gcodeAnalysis" in fileData.keys(): if "estimatedPrintTime" in fileData["gcodeAnalysis"].keys(): estimatedPrintTime = fileData["gcodeAnalysis"]["estimatedPrintTime"] if "filament" in fileData["gcodeAnalysis"].keys(): filament = fileData["gcodeAnalysis"]["filament"] self._stateMonitor.setJobData({"filename": formattedFilename, "filesize": formattedFilesize, "estimatedPrintTime": estimatedPrintTime, "filament": filament, "sd": sd})
def _setProgressData(self, progress, filepos, printTime, printTimeLeft): self._progress = progress self._printTime = printTime self._printTimeLeft = printTimeLeft formattedPrintTime = None if (self._printTime): formattedPrintTime = util.getFormattedTimeDelta( datetime.timedelta(seconds=self._printTime)) formattedPrintTimeLeft = None if (self._printTimeLeft): formattedPrintTimeLeft = util.getFormattedTimeDelta( datetime.timedelta(minutes=self._printTimeLeft)) formattedFilePos = None if (filepos): formattedFilePos = util.getFormattedSize(filepos) self._stateMonitor.setProgress({ "progress": self._progress, "filepos": formattedFilePos, "printTime": formattedPrintTime, "printTimeLeft": formattedPrintTimeLeft })
def _setJobData(self, filename, filesize, sd): if filename is not None: self._selectedFile = { "filename": filename, "filesize": filesize, "sd": sd } else: self._selectedFile = None formattedFilename = None formattedFilesize = None estimatedPrintTime = None filament = None if filename: formattedFilename = os.path.basename(filename) if filesize: formattedFilesize = util.getFormattedSize(filesize) fileData = self._gcodeManager.getFileData(filename) if fileData is not None and "gcodeAnalysis" in fileData.keys(): if "estimatedPrintTime" in fileData["gcodeAnalysis"].keys(): estimatedPrintTime = fileData["gcodeAnalysis"][ "estimatedPrintTime"] if "filament" in fileData["gcodeAnalysis"].keys(): filament = fileData["gcodeAnalysis"]["filament"] self._stateMonitor.setJobData({ "filename": formattedFilename, "filesize": formattedFilesize, "estimatedPrintTime": estimatedPrintTime, "filament": filament, "sd": sd })
def getFinishedTimelapses(): files = [] basedir = settings().getBaseFolder("timelapse") for osFile in os.listdir(basedir): if not fnmatch.fnmatch(osFile, "*.mpg"): continue statResult = os.stat(os.path.join(basedir, osFile)) files.append({ "name": osFile, "size": util.getFormattedSize(statResult.st_size), "bytes": statResult.st_size, "date": util.getFormattedDateTime(datetime.datetime.fromtimestamp(statResult.st_ctime)) }) return files
def readGcodeFiles(): files = gcodeManager.getAllFileData() sdFileList = printer.getSdFiles() if sdFileList is not None: for sdFile in sdFileList: files.append({ "name": sdFile, "size": "n/a", "bytes": 0, "date": "n/a", "origin": "sd" }) return jsonify(files=files, free=util.getFormattedSize(util.getFreeBytes(settings.getpath("uploads"))))
def readGcodeFiles(): files = gcodeManager.getAllFileData() sdFileList = printer.getSdFiles() if sdFileList is not None: for sdFile in sdFileList: files.append({ "name": sdFile, "size": "n/a", "bytes": 0, "date": "n/a", "origin": "sd" }) return jsonify(files=files, free=util.getFormattedSize(util.getFreeBytes(settings().getBaseFolder("uploads"))))
def getFileData(self, filename): if not filename: return filename = self._getBasicFilename(filename) # TODO: Make this more robust when STLs will be viewable from the # client if isSTLFileName(filename): return absolutePath = self.getAbsolutePath(filename) if absolutePath is None: return None statResult = os.stat(absolutePath) fileData = { "name": filename, "size": util.getFormattedSize(statResult.st_size), "bytes": statResult.st_size, "date": util.getFormattedDateTime(datetime.datetime.fromtimestamp(statResult.st_ctime)) } # enrich with additional metadata from analysis if available if filename in self._metadata.keys(): for key in self._metadata[filename].keys(): if key == "prints": val = self._metadata[filename][key] formattedLast = None if "last" in val and val["last"] is not None: formattedLast = { "date": util.getFormattedDateTime(datetime.datetime.fromtimestamp(val["last"]["date"])), "success": val["last"]["success"] } formattedPrints = { "success": val["success"], "failure": val["failure"], "last": formattedLast } fileData["prints"] = formattedPrints else: fileData[key] = self._metadata[filename][key] return fileData
def getTimelapseData(): lapse = printer.getTimelapse() type = "off" additionalConfig = {} if lapse is not None and isinstance(lapse, timelapse.ZTimelapse): type = "zchange" elif lapse is not None and isinstance(lapse, timelapse.TimedTimelapse): type = "timed" additionalConfig = { "interval": lapse.interval } files = timelapse.getFinishedTimelapses() for file in files: file["size"] = util.getFormattedSize(file["size"]) file["url"] = url_for("downloadTimelapse", filename=file["name"]) return jsonify({ "type": type, "config": additionalConfig, "files": files })
def readGcodeFilesForTarget(target): if target not in [FileDestinations.LOCAL, FileDestinations.SDCARD]: return make_response("Invalid target: %s" % target, 400) return jsonify(files=_getFileList(target), free=util.getFormattedSize(util.getFreeBytes(settings().getBaseFolder("uploads"))))
def readGcodeFiles(): files = _getFileList(FileDestinations.LOCAL) files.extend(_getFileList(FileDestinations.SDCARD)) return jsonify(files=files, free=util.getFormattedSize(util.getFreeBytes(settings().getBaseFolder("uploads"))))