From fb9fd7e6c9fceb14c365aeb8802693f807becad2 Mon Sep 17 00:00:00 2001 From: Bryan Mayland Date: Sun, 14 Jul 2013 11:20:37 -0400 Subject: [PATCH 1/4] Fix metadata removal on upload for files with un-sane characters in them When re-uploading a file with characters that will be later sanitized, the old metadata entry wasn't removed because it checked the unsane filename rather than the sanitized version that will later be stored. This was creating an inconsistent metadata view during analysis for files with spaces in them. --- octoprint/gcodefiles.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/octoprint/gcodefiles.py b/octoprint/gcodefiles.py index b44f2a3..d81acde 100644 --- a/octoprint/gcodefiles.py +++ b/octoprint/gcodefiles.py @@ -123,14 +123,15 @@ class GcodeManager: if absolutePath is None: return None - if file.filename in self._metadata.keys(): + basename = os.path.basename(absolutePath) + if basename in self._metadata.keys(): # delete existing metadata entry, since the file is going to get overwritten - del self._metadata[file.filename] + del self._metadata[basename] self._metadataDirty = True self._saveMetadata() file.save(absolutePath) - self._metadataAnalyzer.addFileToQueue(os.path.basename(absolutePath)) - return self._getBasicFilename(absolutePath) + self._metadataAnalyzer.addFileToQueue(basename) + return basename def getFutureFilename(self, file): if not file: From 8f6d536b8fd5c627f1e60ccdd724155b28fdab2c Mon Sep 17 00:00:00 2001 From: Bryan Mayland Date: Sun, 14 Jul 2013 11:26:14 -0400 Subject: [PATCH 2/4] Update job metadata when the gcodemanager signals a change --- octoprint/printer.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/octoprint/printer.py b/octoprint/printer.py index fecc841..951771a 100644 --- a/octoprint/printer.py +++ b/octoprint/printer.py @@ -33,6 +33,7 @@ class Printer(): from collections import deque self._gcodeManager = gcodeManager + self._gcodeManager.registerCallback(self) # state self._temp = None @@ -132,6 +133,14 @@ class Printer(): try: callback.sendFeedbackCommandOutput(name, output) except: pass + #~~ callback from gcodemanager + + def sendUpdateTrigger(self, type): + if type == "gcodeFiles" and self._selectedFile: + self._setJobData(self._selectedFile["filename"], + self._selectedFile["filesize"], + self._selectedFile["sd"]) + #~~ printer commands def connect(self, port=None, baudrate=None): From 48408910b5ee60f99fcdfc04e03ad27d79978c26 Mon Sep 17 00:00:00 2001 From: Bryan Mayland Date: Sun, 14 Jul 2013 11:31:55 -0400 Subject: [PATCH 3/4] Remove superfluous selectedFile setting as setJobData does that --- octoprint/printer.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/octoprint/printer.py b/octoprint/printer.py index 951771a..8844a6d 100644 --- a/octoprint/printer.py +++ b/octoprint/printer.py @@ -430,11 +430,6 @@ class Printer(): def mcFileTransferStarted(self, filename, filesize): self._sdStreaming = True - self._selectedFile = { - "filename": filename, - "filesize": filesize, - "sd": True - } self._setJobData(filename, filesize, True) self._setProgressData(0.0, 0, 0, None) @@ -442,7 +437,6 @@ class Printer(): def mcFileTransferDone(self): self._sdStreaming = False - self._selectedFile = None self._setCurrentZ(None) self._setJobData(None, None, None) From 2cafc6114d77ab292ad1723f8d557015d4d4186f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sat, 20 Jul 2013 16:20:34 +0200 Subject: [PATCH 4/4] Just in case we'll use subfolders in the future... --- octoprint/gcodefiles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/octoprint/gcodefiles.py b/octoprint/gcodefiles.py index d81acde..704a7b3 100644 --- a/octoprint/gcodefiles.py +++ b/octoprint/gcodefiles.py @@ -123,7 +123,7 @@ class GcodeManager: if absolutePath is None: return None - basename = os.path.basename(absolutePath) + basename = self._getBasicFilename(absolutePath) if basename in self._metadata.keys(): # delete existing metadata entry, since the file is going to get overwritten del self._metadata[basename]