From 00796891311b955d97ae28758ed69076a23b31f2 Mon Sep 17 00:00:00 2001
From: vkovtun <viktor.kovtun@id.ethz.ch>
Date: Thu, 19 Jan 2023 16:45:57 +0100
Subject: [PATCH] SSDM-11306 Implemented email submission for the missing case
 when sample/experiment is missing.

---
 .../eln-lims-dropbox/eln-lims-dropbox.py           | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

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 702d42812a2..3d631b61a4b 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
@@ -60,7 +60,9 @@ def process(transaction):
                 emailAddress = getSampleRegistratorsEmail(transaction, sampleSpace, projectCode, sampleCode)
                 sample = transaction.getSample("/" + sampleSpace + "/" + projectCode + "/" + sampleCode);
                 if sample is None:
-                    raise UserFailureException(INVALID_FORMAT_ERROR_MESSAGE + ":" + SAMPLE_MISSING_ERROR_MESSAGE);
+                    reportIssue(transaction,
+                                INVALID_FORMAT_ERROR_MESSAGE + ":" + SAMPLE_MISSING_ERROR_MESSAGE,
+                                None);
                 if len(datasetInfo) >= 5:
                     datasetType = datasetInfo[4];
                 if len(datasetInfo) >= 6:
@@ -76,7 +78,9 @@ def process(transaction):
                 emailAddress = getSampleRegistratorsEmail(transaction, sampleSpace, None, sampleCode)
                 sample = transaction.getSample("/" + sampleSpace + "/" + sampleCode);
                 if sample is None:
-                    raise UserFailureException(INVALID_FORMAT_ERROR_MESSAGE + ":" + SAMPLE_MISSING_ERROR_MESSAGE);
+                    reportIssue(transaction,
+                                INVALID_FORMAT_ERROR_MESSAGE + ":" + SAMPLE_MISSING_ERROR_MESSAGE,
+                                None);
                 if len(datasetInfo) >= 4:
                     datasetType = datasetInfo[3];
                 if len(datasetInfo) >= 5:
@@ -110,7 +114,9 @@ def process(transaction):
                                                               experimentCode);
                 experiment = transaction.getExperiment("/" + experimentSpace + "/" + projectCode + "/" + experimentCode);
                 if experiment is None:
-                    raise UserFailureException(INVALID_FORMAT_ERROR_MESSAGE + ":" + EXPERIMENT_MISSING_ERROR_MESSAGE);
+                    reportIssue(transaction,
+                                INVALID_FORMAT_ERROR_MESSAGE + ":" + EXPERIMENT_MISSING_ERROR_MESSAGE,
+                                None);
                 if len(datasetInfo) >= 5:
                     datasetType = datasetInfo[4];
                 if len(datasetInfo) >= 6:
@@ -196,7 +202,7 @@ def getContactsEmailAddresses(transaction):
 
 def reportIssue(transaction, errorMessage, emailAddress):
     contacts = getContactsEmailAddresses(transaction);
-    allAddresses = [emailAddress] + contacts;
+    allAddresses = [emailAddress] + contacts if emailAddress is not None else contacts;
     sendMail(transaction, map(lambda address: EMailAddress(address), allAddresses), EMAIL_SUBJECT, errorMessage);
     raise UserFailureException(errorMessage);
 
-- 
GitLab