Esempio n. 1
0
    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
Esempio n. 2
0
	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})
Esempio n. 3
0
	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})
Esempio n. 4
0
	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
Esempio n. 5
0
    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,
            }
        )
Esempio n. 6
0
	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})
Esempio n. 7
0
    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
        })
Esempio n. 8
0
    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
        })
Esempio n. 9
0
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
Esempio n. 10
0
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"))))
Esempio n. 11
0
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"))))
Esempio n. 12
0
    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
Esempio n. 13
0
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
	})
Esempio n. 14
0
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"))))
Esempio n. 15
0
def readGcodeFiles():
	files = _getFileList(FileDestinations.LOCAL)
	files.extend(_getFileList(FileDestinations.SDCARD))
	return jsonify(files=files, free=util.getFormattedSize(util.getFreeBytes(settings().getBaseFolder("uploads"))))