diff --git a/ui-eln-lims/src/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/eln-lims-dropbox.py b/ui-eln-lims/src/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/eln-lims-dropbox.py index 0dd602446e90f1095976ab52c2f135df6762e38a..97b241960341fdc57a501fe631cd37a2b73b55f4 100644 --- a/ui-eln-lims/src/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/eln-lims-dropbox.py +++ b/ui-eln-lims/src/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/eln-lims-dropbox.py @@ -32,8 +32,14 @@ def process(transaction): incoming = transaction.getIncoming(); folderName = substring_up_to_hash(incoming.getName()); emailAddress = None + discardHiddenFiles = transaction.getGlobalState().getThreadParameters().discardHiddenFiles() try: + if discardHiddenFiles: + hiddenFiles = getHiddenFiles(incoming) + for filePath in hiddenFiles: + deleteFiles(filePath) + if not folderName.startswith('.'): datasetInfo = folderName.split("+"); entityKind = None; @@ -89,7 +95,7 @@ def process(transaction): raise UserFailureException(INVALID_FORMAT_ERROR_MESSAGE + ":" + FAILED_TO_PARSE_SAMPLE_ERROR_MESSAGE); hiddenFiles = getHiddenFiles(incoming) - if hiddenFiles: + if hiddenFiles and not discardHiddenFiles: reportIssue(HIDDEN_FILES_ERROR_MESSAGE + ":" + FAILED_TO_PARSE_SAMPLE_ERROR_MESSAGE + ":\n" + pathListToStr(hiddenFiles)) illegalFiles = getIllegalFiles(incoming) @@ -126,7 +132,7 @@ def process(transaction): raise UserFailureException(INVALID_FORMAT_ERROR_MESSAGE + ":" + FAILED_TO_PARSE_EXPERIMENT_ERROR_MESSAGE); hiddenFiles = getHiddenFiles(incoming) - if hiddenFiles: + if hiddenFiles and not discardHiddenFiles: reportIssue(HIDDEN_FILES_ERROR_MESSAGE + ":" + FAILED_TO_PARSE_EXPERIMENT_ERROR_MESSAGE + ":\n" + pathListToStr(hiddenFiles)) illegalFiles = getIllegalFiles(incoming) @@ -188,7 +194,7 @@ def process(transaction): try: for inputFile in filesInFolder: Files.move(inputFile.toPath(), Paths.get(tmpPath, inputFile.getName()), - StandardCopyOption.ATOMIC_MOVE); + StandardCopyOption.ATOMIC_MOVE); transaction.moveFile(tmpDir.getAbsolutePath(), dataSet); finally: if tmpDir is not None: @@ -252,6 +258,17 @@ def getHiddenFiles(folder): return result +def deleteFiles(stringPath): + file = File(stringPath) + if not file.exists(): + return + listFiles = file.listFiles() + if not listFiles is None: + for child in listFiles: + deleteFiles(str(child.getAbsolutePath())) + Files.delete(Paths.get(stringPath)) + + def getIllegalFiles(folder): result = [] if folder.getName() in ILLEGAL_FILES: diff --git a/ui-eln-lims/src/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/plugin.properties b/ui-eln-lims/src/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/plugin.properties index 4e99fd7a81bb1915938134d68331cb010b9a567a..3cabc20155abbc0179752023dc5b3f12f44b55a8 100644 --- a/ui-eln-lims/src/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/plugin.properties +++ b/ui-eln-lims/src/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/plugin.properties @@ -7,3 +7,4 @@ incoming-share-id = ${default-incoming-share-id:1} incoming-share-minimum-free-space-in-gb = ${default-incoming-share-minimum-free-space-in-gb:1} h5-folders = ${dataset-uploader.h5-folders:false} h5ar-folders = ${dataset-uploader.h5ar-folders:true} +discard-hidden-files = true