Skip to content

Commit

Permalink
New Version 1.13.1
Browse files Browse the repository at this point in the history
- B #145, #143: Issues with manuell added print jobs (e.g. missing username, lastDate and total)
  • Loading branch information
OllisGit committed May 18, 2021
1 parent b360fa2 commit 104756b
Show file tree
Hide file tree
Showing 7 changed files with 124 additions and 30 deletions.
71 changes: 67 additions & 4 deletions octoprint_PrintJobHistory/DatabaseManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
FORCE_CREATE_TABLES = False
SQL_LOGGING = True

CURRENT_DATABASE_SCHEME_VERSION = 5
CURRENT_DATABASE_SCHEME_VERSION = 6

# List all Models
MODELS = [PluginMetaDataModel, PrintJobModel, FilamentModel, TemperatureModel]
Expand Down Expand Up @@ -73,14 +73,73 @@ def _createOrUpgradeSchemeIfNecessary(self):

def _upgradeDatabase(self,currentDatabaseSchemeVersion, targetDatabaseSchemeVersion):

migrationFunctions = [self._upgradeFrom1To2, self._upgradeFrom2To3, self._upgradeFrom3To4, self._upgradeFrom4To5]
migrationFunctions = [self._upgradeFrom1To2,
self._upgradeFrom2To3,
self._upgradeFrom3To4,
self._upgradeFrom4To5,
self._upgradeFrom5To6,
self._upgradeFrom6To7,
self._upgradeFrom7To8,
self._upgradeFrom8To9,
self._upgradeFrom9To10
]

for migrationMethodIndex in range(currentDatabaseSchemeVersion -1, targetDatabaseSchemeVersion -1):
self._logger.info("Database migration from '" + str(migrationMethodIndex + 1) + "' to '" + str(migrationMethodIndex + 2) + "'")
migrationFunctions[migrationMethodIndex]()
pass
pass

def _upgradeFrom9To10(self):
self._logger.info(" Starting 9 -> 10")
self._logger.info(" Successfully 9 -> 10")
pass

def _upgradeFrom8To9(self):
self._logger.info(" Starting 8 -> 9")
self._logger.info(" Successfully 8 -> 9")
pass

def _upgradeFrom7To8(self):
self._logger.info(" Starting 7 -> 8")
self._logger.info(" Successfully 7 -> 8")
pass

def _upgradeFrom6To7(self):
self._logger.info(" Starting 6 -> 7")
self._logger.info(" Successfully 6 -> 7")
pass

def _upgradeFrom5To6(self):
self._logger.info(" Starting 5 -> 6")
# What is changed:
# - FilamentModel:
# - renameing:
# profileVendor -> vendor
# spoolWeight -> weight
# (ALTER TABLE spo_spoolmodel RENAME COLUMN encloserTemperature to enclosureTemperature; not working SQLite did not support the ALTER TABLE RENAME COLUMN syntax before version 3.25.0.
# see https://www.sqlitetutorial.net/sqlite-rename-column/#:~:text=SQLite%20did%20not%20support%20the,the%20version%20lower%20than%203.25.)

connection = sqlite3.connect(self._databaseFileLocation)
cursor = connection.cursor()

sql = """
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
UPDATE 'pjh_filamentmodel' SET toolId='total' where toolId is NULL;
UPDATE 'pjh_pluginmetadatamodel' SET value=6 WHERE key='databaseSchemeVersion';
COMMIT;
PRAGMA foreign_keys=on;
"""
cursor.executescript(sql)

connection.close()
self._logger.info(" Successfully 5 -> 6")
pass


def _upgradeFrom4To5(self):
self._logger.info(" Starting 4 -> 5")
# What is changed:
Expand Down Expand Up @@ -477,7 +536,8 @@ def calculatePrintJobsStatisticByQuery(self, tableQuery):
printJobCount = printJobCount + 1
if (firstDate == None):
firstDate = job.printStartDateTime
lastDate = job.printEndDateTime
if (job.printEndDateTime != None):
lastDate = job.printEndDateTime
tempJobFileSize = job.fileSize
if (tempJobFileSize == None):
tempJobFileSize = 0
Expand Down Expand Up @@ -520,7 +580,10 @@ def calculatePrintJobsStatisticByQuery(self, tableQuery):

# do formatting
queryString = self._buildQueryString(tableQuery)
fromToString = firstDate.strftime('%d.%m.%Y %H:%M') + " - " + lastDate.strftime('%d.%m.%Y %H:%M')
lastDateString = ""
if (lastDate != None):
lastDateString = lastDate.strftime('%d.%m.%Y %H:%M')
fromToString = firstDate.strftime('%d.%m.%Y %H:%M') + " - " + lastDateString
durationString = StringUtils.secondsToText(duration)
lengthString = self._buildLengthString(length)
weightString = self._buildWeightString(weight)
Expand Down
1 change: 1 addition & 0 deletions octoprint_PrintJobHistory/api/PrintJobHistoryAPI.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class PrintJobHistoryAPI(octoprint.plugin.BlueprintPlugin):

def _updatePrintJobFromJson(self, printJobModel, jsonData):
# transfer header values
printJobModel.userName = self._getValueFromJSONOrNone("userName", jsonData)
printJobModel.fileName = self._getValueFromJSONOrNone("fileName", jsonData)
# printJobModel.filePathName = self._getValueFromJSONOrNone("fileName", jsonData) # pech
printJobModel.printStartDateTime = StringUtils.transformToDateTimeOrNone(self._getValueFromJSONOrNone("printStartDateTimeFormatted", jsonData))
Expand Down
7 changes: 5 additions & 2 deletions octoprint_PrintJobHistory/models/PrintJobModel.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,12 @@ def getFilamentModels(self, withoutTotal = False):
self._loadFilamentModels()
allFilamentModels = self.filamentModelsByToolId.values()
if (withoutTotal):
allFilamentModels[:] = [filamentModel for filamentModel in allFilamentModels if filamentModel.toolId != "total"]
newAllFilamentModels = []
for filamentModel in allFilamentModels:
if filamentModel.toolId != "total":
newAllFilamentModels.append(filamentModel)
allFilamentModels = newAllFilamentModels
pass

return allFilamentModels


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ function PrintJobHistoryEditDialog(){
var self = this;

this.apiClient = null;
this.currentUser = null;

this.editPrintJobItemDialog = null;
this.printJobItemForEdit = null;
Expand Down Expand Up @@ -193,6 +194,11 @@ function PrintJobHistoryEditDialog(){
}


/////////////////////////////////////////////////////////////////////////////////////////////////// SETTER
this.setCurrentUser = function(currentUser){
this.currentUser = currentUser;
}

/////////////////////////////////////////////////////////////////////////////////////////////////// SHOW DIALOG
this.showDialog = function(printJobItemForEdit, closeDialogHandler, fullEditMode){

Expand Down Expand Up @@ -314,22 +320,28 @@ function PrintJobHistoryEditDialog(){
return;
}


var noteText = self.noteEditor.getText();
var noteDeltaFormat = self.noteEditor.getContents();
var noteHtml = self.noteEditor.getHtml();
self.printJobItemForEdit.noteText(noteText);
self.printJobItemForEdit.noteDeltaFormat(noteDeltaFormat);
self.printJobItemForEdit.noteHtml(noteHtml);

if (self.printJobItemForEdit.userName == null ||
self.printJobItemForEdit.userName() == null ||
self.printJobItemForEdit.userName().trim().length === 0){
if (self.currentUser != null){
self.printJobItemForEdit.userName(self.currentUser.name);
}
}

self.apiClient.callStorePrintJob(self.printJobItemForEdit.databaseId(), self.printJobItemForEdit, function(allPrintJobsResponse){
self.editPrintJobItemDialog.modal('hide');
self.closeDialogHandler(true);
});

}


/////////////////////////////////////////////////////////////////////////////////////////////////// DELETE PRINT JOB
this.deletePrintJobItem = function(){
var result = confirm("Do you really want to delete the print job?");
Expand All @@ -341,7 +353,6 @@ function PrintJobHistoryEditDialog(){
}
}


/////////////////////////////////////////////////////////////////////////////////////////////////// DELETE IMAGE
this.deleteImage = function(){

Expand Down Expand Up @@ -442,7 +453,6 @@ function PrintJobHistoryEditDialog(){
}
}


this.cancelCaptureImage = function(){
self.imageDisplayMode(IMAGEDISPLAYMODE_SNAPSHOTIMAGE);
self.captureButtonText.text(reCaptureText);
Expand Down
40 changes: 25 additions & 15 deletions octoprint_PrintJobHistory/static/js/PrintJobHistory.js
Original file line number Diff line number Diff line change
Expand Up @@ -139,25 +139,27 @@ $(function() {
// result from backend

this.allFilamentModels = updateData.filamentModels;
this.jsonArray = ko.observable(this.allFilamentModels);
this.allToolKeys = Object.keys(this.allFilamentModels);
this.isMultiToolPrint(Object.keys(this.allFilamentModels).length > 1)

totalFilamentModel = updateData.filamentModels["total"]; // should always be present
this.diameter(totalFilamentModel.diameter);
this.density(totalFilamentModel.density);
this.material(totalFilamentModel.material);
this.vendor(totalFilamentModel.vendor);
this.spoolName(totalFilamentModel.spoolName);
this.spoolCost(totalFilamentModel.spoolCost);
this.spoolCostUnit(totalFilamentModel.spoolCostUnit);
this.weight(totalFilamentModel.weight);
// this.usedLength( formatFilamentLength(updateData.filamentEntity.usedLength) );
// this.calculatedLength( formatFilamentLength(updateData.filamentEntity.calculatedLength) );
this.usedLengthFormatted(totalFilamentModel.usedLengthFormatted );
this.calculatedLengthFormatted(totalFilamentModel.calculatedLengthFormatted );
this.usedWeight(totalFilamentModel.usedWeight );
this.usedCost(totalFilamentModel.usedCost );
// should never happen, but in the past we have some jobs where "total" is missing
if (totalFilamentModel != null){
this.diameter(totalFilamentModel.diameter);
this.density(totalFilamentModel.density);
this.material(totalFilamentModel.material);
this.vendor(totalFilamentModel.vendor);
this.spoolName(totalFilamentModel.spoolName);
this.spoolCost(totalFilamentModel.spoolCost);
this.spoolCostUnit(totalFilamentModel.spoolCostUnit);
this.weight(totalFilamentModel.weight);
// this.usedLength( formatFilamentLength(updateData.filamentEntity.usedLength) );
// this.calculatedLength( formatFilamentLength(updateData.filamentEntity.calculatedLength) );
this.usedLengthFormatted(totalFilamentModel.usedLengthFormatted );
this.calculatedLengthFormatted(totalFilamentModel.calculatedLengthFormatted );
this.usedWeight(totalFilamentModel.usedWeight );
this.usedCost(totalFilamentModel.usedCost );
}
}

this.snapshotFilename(updateData.snapshotFilename);
Expand Down Expand Up @@ -497,6 +499,14 @@ $(function() {
}
}

self.onUserLoggedIn = function(currentUser) {
self.printJobEditDialog.setCurrentUser(currentUser);
}
self.onUserLoggedOut = function() {
if (self.printJobEditDialog != null) {
self.printJobEditDialog.setCurrentUser(null);
}
}
// receive data from server
self.onDataUpdaterPluginMessage = function (plugin, data) {

Expand Down
15 changes: 11 additions & 4 deletions octoprint_PrintJobHistory/test/test_PrintJobService.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@ def init_database(self):
self.databaseManager = DatabaseManager(testLogger, True)
self.databaseManager.initDatabase(self.databaselocation, self._clientOutput)



def test_createPrintJob(self):
def _test_createPrintJob(self):
self.databaseManager.deletePrintJob(1011)

newPrintJob = self.printJobService.createWithDefaults()
Expand Down Expand Up @@ -98,11 +96,20 @@ def test_createPrintJob(self):
# - allTemperatures



# do test-cleanup
for printJobDatabaseId in self.rollBackPrintJobs:
self.databaseManager.deletePrintJob(printJobDatabaseId)

def test_readFilamentModels(self):
# - allFilaments
loadedPrintJobModel = self.printJobService.loadPrintJob(72)
allFilamentModels = loadedPrintJobModel.getFilamentModels()
self.assertEqual(len(allFilamentModels), 2, "'total' and 'tool0' filamentModel expected")

loadedPrintJobModel = self.printJobService.loadPrintJob(72)
allFilamentModels = loadedPrintJobModel.getFilamentModels(withoutTotal=True)
self.assertEqual(len(allFilamentModels), 1, "'total' filamentModel expected")



if __name__ == '__main__':
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
plugin_name = "Print Job History"

# The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module
plugin_version = "1.13.0"
plugin_version = "1.13.1"

# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin
# module
Expand Down

0 comments on commit 104756b

Please sign in to comment.