def saveSpool(self): self._logger.info("API Save spool") jsonData = request.json databaseId = self._getValueFromJSONOrNone("databaseId", jsonData) self._databaseManager.connectoToDatabase() if (databaseId != None): self._logger.info("Update spool with database id '" + str(databaseId) + "'") spoolModel = self._databaseManager.loadSpool( databaseId, withReusedConnection=True) if (spoolModel == None): self._logger.warning("Save spool failed. Something is wrong") else: self._updateSpoolModelFromJSONData(spoolModel, jsonData) else: self._logger.info("Create new spool") spoolModel = SpoolModel() self._updateSpoolModelFromJSONData(spoolModel, jsonData) databaseId = self._databaseManager.saveSpool(spoolModel, withReusedConnection=True) self._databaseManager.closeDatabase() return flask.jsonify()
def _createSpoolModelFromLegacy(self, allSpoolLegacyList): allSpoolModels = list() for spoolDict in allSpoolLegacyList: spoolModel = SpoolModel() spoolIdInt = spoolDict["id"] nameUnicode = spoolDict["name"] usedFloat = spoolDict["used"] weightFloat = spoolDict["weight"] tempOffsetInt = spoolDict["temp_offset"] costFloat = spoolDict["cost"] profileDict = spoolDict["profile"] profileIdInt = profileDict["id"] diameterFloat = profileDict["diameter"] materialUnicode = profileDict["material"] vendorUnicode = profileDict["vendor"] densityFloat = profileDict["density"] spoolModel.displayName = nameUnicode spoolModel.vendor = vendorUnicode spoolModel.material = materialUnicode spoolModel.density = densityFloat spoolModel.diameter = diameterFloat spoolModel.cost = costFloat spoolModel.costUnit = "ToDo" spoolModel.usedLength = usedFloat spoolModel.totalWeight = weightFloat allSpoolModels.append(spoolModel) return allSpoolModels
def _createSampleSpoolModel(self): #DisplayName, Vendor, Material, Color[# code], Diameter [mm], Density [g/cm³], Temperature [°C], TotalWeight [g], UsedWeight [g], UsedLength [mm], FirstUse [dd.mm.yyyy hh:mm], LastUse [dd.mm.yyyy hh:mm], PurchasedFrom, PurchasedOn [dd.mm.yyyy hh:mm], Cost, CostUnit, Labels, NoteText s1 = SpoolModel() s1.displayName = "Number #1" s1.colorName = "raw-red" s1.color = "#FF0000" s1.vendor = "The Spool Company" s1.material = "PETG" s1.diameter = 1.75 s1.diameterTolerance = 0.2 s1.density = 1.27 s1.flowRateCompensation = 110 s1.temperature = 182 s1.bedtemperature = 52 s1.enclosureTemperature = 23 s1.totalWeight = 1000.0 s1.spoolWeight = 12.3 s1.usedWeight = 123.4 s1.totalLength = 1321 s1.usedLength = 234 s1.lastUse = datetime.datetime.now() s1.firstUse = datetime.datetime.strptime("2020-03-02 10:33", '%Y-%m-%d %H:%M') s1.purchasedOn = datetime.datetime.strptime("2020-02-01", '%Y-%m-%d') s1.purchasedFrom = "Unknown Seller" s1.cost = "12.30" s1.costUnit = "€" s1.noteText = "Very cheap spool!" return s1
def _createSpoolModelFromLegacy(self, allSpoolLegacyList): allSpoolModels = list() for spoolDict in allSpoolLegacyList: spoolModel = SpoolModel() spoolIdInt = spoolDict["id"] nameUnicode = spoolDict["name"] usedWeightFloat = spoolDict["used"] totalWeightFloat = spoolDict["weight"] tempOffsetInt = spoolDict["temp_offset"] costFloat = spoolDict["cost"] profileDict = spoolDict["profile"] profileIdInt = profileDict["id"] diameterFloat = profileDict["diameter"] materialUnicode = profileDict["material"] vendorUnicode = profileDict["vendor"] densityFloat = profileDict["density"] spoolModel.displayName = nameUnicode spoolModel.vendor = vendorUnicode spoolModel.material = materialUnicode spoolModel.density = densityFloat spoolModel.diameter = diameterFloat spoolModel.cost = costFloat spoolModel.costUnit = self._filamentManagerPluginImplementation._settings.get(["currencySymbol"]) spoolModel.totalWeight = totalWeightFloat spoolModel.usedWeight = usedWeightFloat spoolModel.usedLength = self._calculateUsedLength(spoolModel.usedWeight, spoolModel.density, spoolModel.diameter) allSpoolModels.append(spoolModel) return allSpoolModels
def _createSampleSpoolModel(self): #DisplayName, Vendor, Material, Color[# code], Diameter [mm], Density [g/cm³], Temperature [°C], TotalWeight [g], UsedWeight [g], UsedLength [mm], FirstUse [dd.mm.yyyy hh:mm], LastUse [dd.mm.yyyy hh:mm], PurchasedFrom, PurchasedOn [dd.mm.yyyy hh:mm], Cost, CostUnit, Labels, NoteText s1 = SpoolModel() s1.displayName = "Number #1" s1.vendor = "The Spool Company" s1.material = "PETG" s1.color = "#FF0000" s1.diameter = 1.75 s1.density = 1.27 return s1
def _test_saveSpool(self): spoolModel = SpoolModel() spoolModel.displayName = "TESTSPOOL - Number1" self.databaseManager.initDatabase(self.postgresDatabaseSettings, self._clientOutput) databaseId = self.databaseManager.saveSpool(spoolModel) print(databaseId) self.assertTrue(databaseId != None, "Spool not saved") spoolModel = self.databaseManager.loadSpool(databaseId) self.assertTrue(spoolModel != None, "Spool not loaded") self.assertEqual("TESTSPOOL - Number1", spoolModel.displayName, "Spool not saved")
def save_spool(self): self._logger.info("API Save spool") jsonData = request.json databaseId = self._getValueFromJSONOrNone("databaseId", jsonData) if (databaseId != None): self._logger.info("Update spool with database id '"+str(databaseId)+"'") spoolModel = self._databaseManager.loadSpool(databaseId) self._updateSpoolModelFromJSONData(spoolModel, jsonData) else: self._logger.info("Create new spool") spoolModel = SpoolModel() self._updateSpoolModelFromJSONData(spoolModel, jsonData) databaseId = self._databaseManager.saveModel(spoolModel) return flask.jsonify()
def parseCSV(csvFile4Import, updateParsingStatus, errorCollection, logger, deleteAfterParsing=True): result = list() # List with printJobModels lineNumber = 0 try: with open(csvFile4Import) as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') lineNumber = 0 for row in csv_reader: lineNumber += 1 # import time # time.sleep(1) updateParsingStatus(str(lineNumber)) if lineNumber == 1: # createColumnOrderFromHeader(row) # mandatoryFieldCount = 0 mandatoryFieldAvaiable = list() columnIndex = 0 for column in row: column = column.strip() if column in ALL_COLUMNS: columnOrderInFile[columnIndex] = ALL_COLUMNS[column] if column in mandatoryFieldNames: mandatoryFieldAvaiable.append(column) # mandatoryFieldCount += 1 columnIndex += 1 if len(mandatoryFieldAvaiable) != len(mandatoryFieldNames): # if mandatoryFieldCount != len(mandatoryFieldNames): # identify missing files # mandatoryFieldMissing = mandatoryFieldNames - mandatoryFieldAvaiable mandatoryFieldMissing = list( set(mandatoryFieldNames) - set(mandatoryFieldAvaiable) ) errorCollection.append("Mandatory column is missing! <br/><b>'" + "".join(mandatoryFieldMissing) + "'</b><br/>") break else: spoolModel = SpoolModel() # parse line with header defined order columnIndex = 0 for columnValue in row: if columnIndex in columnOrderInFile: csvColumn = columnOrderInFile[columnIndex] if not csvColumn == None: columnValue = columnValue.strip() # check if mandatory value is missing if (len(columnValue) == 0): columnName = csvColumn.columnLabel if columnName in mandatoryFieldNames: errorCollection.append("["+str(lineNumber)+"] Mandatory value for column '" + columnName + "' is missing!") pass else: csvColumn.parseAndAssignFieldValue(columnValue, spoolModel, errorCollection, lineNumber) pass columnIndex += 1 if (len(errorCollection) != 0): logger.error("Reading error line '" + str(lineNumber) + "' in Column '" + column + "' ") else: result.append(spoolModel) pass except Exception as e: errorMessage = "CSV Parsing error. Line:'" + str(lineNumber) + "' Error:'" + str(e) + "' File:'" + csvFile4Import + "'" errorCollection.append(errorMessage) logger.error(errorMessage) finally: if (deleteAfterParsing): logger.info("Removing uploded csv temp-file") try: os.remove(csvFile4Import) except Exception: pass return result