def _processCSVUploadAsync(self, path, importCSVMode, databaseManager, sendCSVUploadResultToClient, logger):
		errorCollection = list()

		# - parsing
		# - backup
		# - append or replace

		resultOfPrintJobs = CSVExportImporter.parseCSV(path, errorCollection, logger)

		if (len(resultOfPrintJobs) > 0):
			# we could import some jobs
			# TODO info to user: about how many parsed

			# - backup
			databaseManager.backupDatabaseFile()
			# TODO info to user: backup done
			# - import mode append/replace
			if (SettingsKeys.KEY_IMPORTCSV_MODE_REPLACE == importCSVMode):
				# delete old database and init a clean database
				databaseManager.reCreateDatabase()

			# TODO info to user: import mode

			# - insert all printjobs in database
			for printJob in resultOfPrintJobs:
				# TODO info to user: insert printJob number

				print(printJob)

			pass
		else:
			errorCollection.append("Nothing to import")

		sendCSVUploadResultToClient("CSV-Import result", errorCollection)
		pass
Example #2
0
    def _processCSVUploadAsync(self, path, importCSVMode, databaseManager,
                               cameraManager, backupFolder,
                               sendCSVUploadStatusToClient, logger):
        errorCollection = list()

        # - parsing
        # - backup
        # - append or replace

        def updateParsingStatus(lineNumber):
            # importStatus, currenLineNumber, backupFilePath, backupSnapshotFilePath, successMessages, errorCollection
            sendCSVUploadStatusToClient("running", lineNumber, "", "", "",
                                        errorCollection)

        resultOfPrintJobs = CSVExportImporter.parseCSV(path,
                                                       updateParsingStatus,
                                                       errorCollection, logger)

        importModeText = "append"
        backupDatabaseFilePath = None
        backupSnapshotFilePath = None
        if (len(resultOfPrintJobs) > 0):
            # we could import some jobs

            # - backup
            backupDatabaseFilePath = databaseManager.backupDatabaseFile(
                backupFolder)
            backupSnapshotFilePath = cameraManager.backupAllSnapshots(
                backupFolder)

            # - import mode append/replace
            if (SettingsKeys.KEY_IMPORTCSV_MODE_REPLACE == importCSVMode):
                # delete old database and init a clean database
                databaseManager.reCreateDatabase()
                cameraManager.reCreateSnapshotFolder()

                importModeText = "fully replaced"

            # - insert all printjobs in database
            currentPrintJobNumber = 0
            for printJob in resultOfPrintJobs:
                currentPrintJobNumber = currentPrintJobNumber + 1
                updateParsingStatus(currentPrintJobNumber)
                databaseManager.insertPrintJob(printJob)
                # print(printJob)
            pass
        else:
            errorCollection.append("Nothing to import!")

        successMessage = ""
        if (len(errorCollection) == 0):
            successMessage = "All data is successful " + importModeText + " with '" + str(
                len(resultOfPrintJobs)) + "' print jobs."
        else:
            successMessage = "Some error(s) occurs! Maybe you need to manually rollback the database!"

        sendCSVUploadStatusToClient("finished", "", backupDatabaseFilePath,
                                    backupSnapshotFilePath, successMessage,
                                    errorCollection)
        pass