diff --git a/datastore_server/etc/service.properties b/datastore_server/etc/service.properties index c45aeaa7d7451077d5a513a49ebe78e44fd2ab6a..3e8cfc2b4c7d4054472ea3b55b8ff27db7adb8ea 100644 --- a/datastore_server/etc/service.properties +++ b/datastore_server/etc/service.properties @@ -91,7 +91,7 @@ mail.smtp.password = # If this property is set a test e-mail will be sent to the specified address after DSS successfully started-up. mail.test.address = test@localhost # Email addresses of people to get notifications about problems in dataset registrations -mail.contact.addresses = admin1@localhost,admin2@localhost +mail.addresses.dropbox-errors = admin1@localhost,admin2@localhost # --------------------------------------------------------------------------- # Data sources diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonDataSetRegistrationServiceV2.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonDataSetRegistrationServiceV2.java index d5dc6d094a9972eb105008dd176ce3ca162d78b8..ec0f23be79ec07dde286fe4654a54bdd34e4e663 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonDataSetRegistrationServiceV2.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonDataSetRegistrationServiceV2.java @@ -53,7 +53,7 @@ public class JythonDataSetRegistrationServiceV2<T extends DataSetInformation> ex static private final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, JythonDataSetRegistrationServiceV2.class); - private static final String MAIL_CONTACT_ADDRESSES_KEY = "mail.contact.addresses"; + private static final String MAIL_CONTACT_ADDRESSES_KEY = "mail.addresses.dropbox-errors"; public JythonDataSetRegistrationServiceV2( AbstractProgrammableTopLevelDataSetHandler<T> registrator, diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/eln-lims-dropbox.py b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/eln-lims-dropbox.py index a1c3cd1bd9bae2e9a0e53ae6e8037ab2169d4597..702d42812a29c8ef00929dec158a94b459dccd2a 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/eln-lims-dropbox.py +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/drop-boxes/eln-lims-dropbox/eln-lims-dropbox.py @@ -26,7 +26,7 @@ NAME_PROPERTY_SET_IN_TWO_PLACES_ERROR_MESSAGE = "$NAME property specified twice, EMAIL_SUBJECT = "ELN LIMS Dropbox Error"; ILLEGAL_FILES = ["desktop.ini", "IconCache.db", "thumbs.db"]; ILLEGAL_FILES_ERROR_MESSAGE = "Directory or contains illegal files: " + str(ILLEGAL_FILES); - +HIDDEN_FILES_ERROR_MESSAGE = "Directory or contains hidden files: files starting with '.'"; def process(transaction): incoming = transaction.getIncoming(); @@ -88,6 +88,9 @@ def process(transaction): else: raise UserFailureException(INVALID_FORMAT_ERROR_MESSAGE + ":" + FAILED_TO_PARSE_SAMPLE_ERROR_MESSAGE); + if hasFolderHiddenFiles(incoming): + reportIssue(transaction, HIDDEN_FILES_ERROR_MESSAGE + ":" + + FAILED_TO_PARSE_SAMPLE_ERROR_MESSAGE, emailAddress); if hasFolderIllegalFiles(incoming): reportIssue(transaction, ILLEGAL_FILES_ERROR_MESSAGE + ":" + FAILED_TO_PARSE_SAMPLE_ERROR_MESSAGE, emailAddress); @@ -119,6 +122,9 @@ def process(transaction): else: raise UserFailureException(INVALID_FORMAT_ERROR_MESSAGE + ":" + FAILED_TO_PARSE_EXPERIMENT_ERROR_MESSAGE); + if hasFolderHiddenFiles(incoming): + reportIssue(transaction, HIDDEN_FILES_ERROR_MESSAGE + ":" + + FAILED_TO_PARSE_EXPERIMENT_ERROR_MESSAGE, emailAddress); if hasFolderIllegalFiles(incoming): reportIssue(transaction, ILLEGAL_FILES_ERROR_MESSAGE + ":" + FAILED_TO_PARSE_EXPERIMENT_ERROR_MESSAGE, emailAddress); @@ -148,7 +154,6 @@ def process(transaction): # Move folder to dataset filesInFolder = incoming.listFiles(); - # Discard folders started with a . (hidden files) itemsInFolder = 0; datasetItem = None; for item in filesInFolder: @@ -163,10 +168,7 @@ def process(transaction): if propertyValue is not None: propertyValueString = str(propertyValue) dataSet.setPropertyValue(propertyKey, propertyValueString) - elif (not fileName.startswith('.')) and (not fileName == "Thumbs.db"): - # Exclude files starting with . - # Exclude Mac .DS_Store - # Exclude Windows Thumbs.db + else: itemsInFolder = itemsInFolder + 1; datasetItem = item; @@ -188,7 +190,7 @@ def process(transaction): def getContactsEmailAddresses(transaction): - emailString = getThreadProperties(transaction)["mail.contact.addresses"] + emailString = getThreadProperties(transaction)["mail.addresses.dropbox-errors"] return re.split("[,;]", emailString) @@ -212,6 +214,18 @@ def hasFolderIllegalCharacters(incoming): return False; +def hasFolderHiddenFiles(incoming): + if incoming.getName().startswith("."): + return True; + + files = incoming.listFiles() + if files is not None: + for f in files: + if hasFolderHiddenFiles(f): + return True; + + return False; + def hasFolderIllegalFiles(incoming): if incoming.getName() in ILLEGAL_FILES: return True;