def generateSysMessagesZipFile(emailAddress, dumpFileNamePrefix, sensorId, sessionId): dumpFileName = sessionId + "/" + dumpFileNamePrefix + ".txt" zipFileName = sessionId + "/" + dumpFileNamePrefix + ".zip" dirname = util.getPath(STATIC_GENERATED_FILE_LOCATION + sessionId) if not os.path.exists(dirname): os.makedirs(dirname) dumpFilePath = util.getPath(STATIC_GENERATED_FILE_LOCATION) + dumpFileName zipFilePath = util.getPath(STATIC_GENERATED_FILE_LOCATION) + zipFileName if os.path.exists(dumpFilePath): os.remove(dumpFilePath) if os.path.exists(zipFilePath): os.remove(zipFilePath) systemMessages = DbCollections.getSystemMessages().find( {SENSOR_ID: sensorId}) if systemMessages is None: util.debugPrint("generateZipFileForDownload: No system info found") return dumpFile = open(dumpFilePath, "a") zipFile = zipfile.ZipFile(zipFilePath, mode="w") try: for systemMessage in systemMessages: data = msgutils.getCalData(systemMessage) del systemMessage["_id"] if CAL in systemMessage and DATA_KEY in systemMessage[CAL]: del systemMessage[CAL][DATA_KEY] systemMessage[DATA_TYPE] = ASCII systemMessageString = json.dumps(systemMessage, sort_keys=False, indent=4) + "\n" length = len(systemMessageString) dumpFile.write(str(length)) dumpFile.write("\n") dumpFile.write(systemMessageString) if data is not None: dataString = str(data) dumpFile.write(dataString) dumpFile.write("\n") zipFile.write(dumpFilePath, arcname=dumpFileNamePrefix + ".txt", compress_type=zipfile.ZIP_DEFLATED) zipFile.close() session = SessionLock.getSession(sessionId) if session is None: os.remove(dumpFilePath) os.remove(zipFilePath) return url = Config.getGeneratedDataPath() + "/" + zipFileName watchForFileAndSendMail(emailAddress, url, zipFileName) except: print "Unexpected error:", sys.exc_info()[0] print sys.exc_info() traceback.print_exc() finally: os.remove(dumpFilePath) zipFile.close()
def generateSysMessagesZipFileForDownload(sensorId, sessionId): util.debugPrint("generateSysMessagesZipFileForDownload") systemMessage = DbCollections.getSystemMessages().find_one( {SENSOR_ID: sensorId}) if systemMessage is None: return {"status": "NOK", "ErrorMessage": "No data found"} else: emailAddress = SessionLock.getSession(sessionId)[USER_NAME] dumpFilePrefix = "dump-sysmessages-" + sensorId zipFileName = sessionId + "/" + dumpFilePrefix + ".zip" t = threading.Thread(target=generateSysMessagesZipFile, args=(emailAddress, dumpFilePrefix, sensorId, sessionId)) t.daemon = True t.start() url = Config.getGeneratedDataPath() + "/" + zipFileName # generateZipFile(sensorId,startTime,days,minFreq,maxFreq,dumpFileNamePrefix,sessionId) return {STATUS: "OK", "dump": zipFileName, URL: url}