From 78e085a82705b64527a24e1e21e619d088c11fbc Mon Sep 17 00:00:00 2001
From: Thomas Kluyver <thomas@kluyver.me.uk>
Date: Wed, 3 Mar 2021 15:04:50 +0000
Subject: [PATCH] More defensive coding around identifying PDF report path

---
 webservice/webservice.py | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/webservice/webservice.py b/webservice/webservice.py
index 0c6775478..0d1696e53 100644
--- a/webservice/webservice.py
+++ b/webservice/webservice.py
@@ -12,7 +12,7 @@ import urllib.parse
 from asyncio import get_event_loop, shield
 from datetime import datetime
 from pathlib import Path
-from typing import Any, Dict, List
+from typing import Any, Dict, List, Optional
 
 import yaml
 import zmq
@@ -1070,8 +1070,11 @@ class ActionsServer:
                 request_time
             )
             await update_mdc_status(self.mdc, 'dark_request', rid, ret)
-            await update_darks_paths(self.mdc, rid, in_folder,
-                                     out_folder, report_path)
+            if report_path is None:
+                logging.warning("Failed to identify report path for dark_request")
+            else:
+                await update_darks_paths(self.mdc, rid, in_folder,
+                                         out_folder, report_path)
         # END of part to run after sending reply
 
         asyncio.ensure_future(_continue())
@@ -1142,7 +1145,7 @@ class ActionsServer:
     async def launch_jobs(
             self, run_nrs, rid, detectors, action, instrument, cycle, proposal,
             request_time
-    ) -> (str, str):
+    ) -> (str, Optional[str]):
         # run xfel_calibrate
         for karabo_id, dconfig in detectors.items():
             detector = dconfig['detector-type']
@@ -1163,8 +1166,11 @@ class ActionsServer:
             ret = await run_action(self.job_db, cmd, self.mode,
                                    proposal, run_nrs[-1], rid)
 
-            report_idx = cmd.index('--report-to') + 1
-            report = cmd[report_idx] + '.pdf'
+            if '--report-to' in cmd[:-1]:
+                report_idx = cmd.index('--report-to') + 1
+                report = cmd[report_idx] + '.pdf'
+            else:
+                report = None
             return ret, report
 
 parser = argparse.ArgumentParser(
-- 
GitLab