Exemplo n.º 1
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
	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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
    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