From 965d39ef493cd02c7c5a4a2a99aafe270fb0f529 Mon Sep 17 00:00:00 2001
From: ahmedk <karim.ahmed@xfel.eu>
Date: Thu, 22 Apr 2021 17:13:41 +0200
Subject: [PATCH] validate input constant_names

---
 ...t_calibration_constants_from_h5files.ipynb | 34 ++++++++++++++-----
 1 file changed, 25 insertions(+), 9 deletions(-)

diff --git a/notebooks/LPD/Inject_calibration_constants_from_h5files.ipynb b/notebooks/LPD/Inject_calibration_constants_from_h5files.ipynb
index 6bbbeccf6..82e33381c 100644
--- a/notebooks/LPD/Inject_calibration_constants_from_h5files.ipynb
+++ b/notebooks/LPD/Inject_calibration_constants_from_h5files.ipynb
@@ -46,10 +46,12 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "import datetime\n",
-    "import h5py\n",
     "import multiprocessing\n",
+    "from datetime import datetime\n",
     "from pathlib import Path\n",
+    "from typing import List, Tuple\n",
+    "\n",
+    "import h5py\n",
     "\n",
     "from iCalibrationDB import (\n",
     "    Constants,\n",
@@ -95,7 +97,11 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "def validate_input_paths(in_folder, creation_time):\n",
+    "def validate_input_paths(\n",
+    "    in_folder: str,\n",
+    "    creation_time: str,\n",
+    "    constant_names: List[str],\n",
+    ") -> Tuple[str, datetime]:\n",
     "    \n",
     "    # Validate input parameters:\n",
     "    if not (in_folder):\n",
@@ -112,10 +118,16 @@
     "        )\n",
     "\n",
     "    try:\n",
-    "        creation_time = datetime.datetime.strptime(creation_time, '%Y-%m-%dT%H:%M:%S')\n",
+    "        creation_time = datetime.strptime(creation_time, '%Y-%m-%dT%H:%M:%S')\n",
     "    except ValueError:\n",
     "        raise ValueError(\"Incorrect data format, should be YYYY-MM-DDTHH:MM:SS i.e. 2019-01-20T14:12:06\")\n",
-    "    \n",
+    "\n",
+    "    for constant in constant_names:\n",
+    "        if not hasattr(Constants.LPD, constant):\n",
+    "            raise ValueError(\n",
+    "                f\"ERROR: Constant name \\\"{constant}\\\" is not a known LPD constant. \"\n",
+    "                f\"Available LPD Constants are {[c for c in dir(Constants.LPD) if c[0] != '_']}\"\n",
+    "            )\n",
     "    return c_folder, creation_time"
    ]
   },
@@ -150,7 +162,7 @@
     "\n",
     "    constant.data = cdata\n",
     "\n",
-    "    md = send_to_db(\n",
+    "    send_to_db(\n",
     "        db_module=physical_unit,\n",
     "        karabo_id=karabo_id,\n",
     "        constant=constant,\n",
@@ -168,12 +180,16 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "c_folder, creation_time = validate_input_paths(in_folder, creation_time)\n",
-    "print(c_folder, creation_time)\n",
+    "c_folder, creation_time = validate_input_paths(\n",
+    "    in_folder,\n",
+    "    creation_time,\n",
+    "    constant_names,\n",
+    ")\n",
+    "\n",
     "# create a report path for calibration constant versions metadata.\n",
     "report_path = get_report(\n",
     "    out_folder=in_folder,\n",
-    "    default_path=f\"No_report/LPD_{datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S')}\"\n",
+    "    default_path=f\"No_report/LPD_{datetime.now().strftime('%Y-%m-%dT%H:%M:%S')}\"\n",
     ")\n",
     "\n",
     "# Calibration constants condition object.\n",
-- 
GitLab