diff --git a/octoprint/gcodefiles.py b/octoprint/gcodefiles.py index cc88bcb..f4cfb41 100644 --- a/octoprint/gcodefiles.py +++ b/octoprint/gcodefiles.py @@ -117,6 +117,11 @@ class GcodeManager: if file: absolutePath = self.getAbsolutePath(file.filename, mustExist=False) if absolutePath is not None: + if file.filename in self._metadata.keys(): + # delete existing metadata entry, since the file is going to get overwritten + del self._metadata[file.filename] + self._metadataDirty = True + self._saveMetadata() file.save(absolutePath) self._metadataAnalyzer.addFileToQueue(os.path.basename(absolutePath)) return self._getBasicFilename(absolutePath) @@ -136,9 +141,9 @@ class GcodeManager: """ Returns the absolute path of the given filename in the gcode upload folder. - Ensures that + Ensures that the file @@ -175,6 +180,7 @@ class GcodeManager: fileData = { "name": filename, "size": util.getFormattedSize(statResult.st_size), + "bytes": statResult.st_size, "date": util.getFormattedDateTime(datetime.datetime.fromtimestamp(statResult.st_ctime)) } @@ -250,6 +256,32 @@ class GcodeManager: self.setFileMetadata(filename, metadata) self._saveMetadata() + def changeLastPrintSuccess(self, filename, succeeded): + filename = self._getBasicFilename(filename) + absolutePath = self.getAbsolutePath(filename) + if absolutePath is None: + return + + metadata = self.getFileMetadata(filename) + if metadata is None: + return + + if "prints" in metadata.keys(): + if "last" in metadata.keys() and metadata["prints"]["last"] is not None: + currentSucceeded = metadata["prints"]["last"]["success"] + if currentSucceeded != succeeded: + metadata["prints"]["last"]["success"] = succeeded + if currentSucceeded: + # last print job was counted as success but actually failed + metadata["prints"]["success"] -= 1 + metadata["prints"]["failure"] += 1 + else: + # last print job was counted as a failure but actually succeeded + metadata["prints"]["success"] += 1 + metadata["prints"]["failure"] -= 1 + self.setFileMetadata(filename, metadata) + self._saveMetadata() + #~~ analysis control def pauseAnalysis(self): diff --git a/octoprint/printer.py b/octoprint/printer.py index de14b6d..14edf8b 100644 --- a/octoprint/printer.py +++ b/octoprint/printer.py @@ -262,7 +262,7 @@ class Printer(): self._stateMonitor.setProgress({"progress": self._progress, "printTime": formattedPrintTime, "printTimeLeft": formattedPrintTimeLeft}) def _addTemperatureData(self, temp, bedTemp, targetTemp, bedTargetTemp): - currentTimeUtc = int((time.time() + time.timezone) * 1000) + currentTimeUtc = int(time.time() * 1000) self._temps["actual"].append((currentTimeUtc, temp)) self._temps["actual"] = self._temps["actual"][-300:] diff --git a/octoprint/static/gcodeviewer/lib/modernizr.custom.09684.js b/octoprint/static/js/modernizr.custom.js similarity index 97% rename from octoprint/static/gcodeviewer/lib/modernizr.custom.09684.js rename to octoprint/static/js/modernizr.custom.js index c41c11b..7c48dd8 100644 --- a/octoprint/static/gcodeviewer/lib/modernizr.custom.09684.js +++ b/octoprint/static/js/modernizr.custom.js @@ -1,5 +1,5 @@ /* Modernizr 2.6.2 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load + * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-gamepad-load */ ; @@ -812,4 +812,16 @@ window.Modernizr = (function( window, document, undefined ) { /*yepnope1.5.4|WTFPL*/ (function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f
  • Sort by name (ascending)
  • Sort by upload date (descending)
  • +
  • Sort by file size (descending)
  • Hide successfully printed files
  • @@ -514,6 +515,7 @@ {% include 'settings.html' %} + @@ -526,7 +528,6 @@ -