From cac86203220caef9cc156225b38e0a0c21768875 Mon Sep 17 00:00:00 2001
From: Remco Tukker <remco.tukker@geant.org>
Date: Fri, 22 Sep 2023 20:25:19 +0200
Subject: [PATCH] and one more old db publisher due to incomplete excel data

---
 .../survey_publisher_old_db_2022.py           | 34 +++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/compendium_v2/publishers/survey_publisher_old_db_2022.py b/compendium_v2/publishers/survey_publisher_old_db_2022.py
index b6ceea90..2719fbf5 100644
--- a/compendium_v2/publishers/survey_publisher_old_db_2022.py
+++ b/compendium_v2/publishers/survey_publisher_old_db_2022.py
@@ -1199,6 +1199,39 @@ def transfer_network_function_virtualisation(nren_dict):
     db.session.commit()
 
 
+def transfer_monitoring_tools(nren_dict):
+    tools = recursive_query(16672)
+    tools = {(nren_name, year): json.loads(answer) for answer_id, nren_name, year, answer in tools}
+    tools_comment = recursive_query(16673)
+    tools_comment = {(nren_name, year): answer.strip('" ') for answer_id, nren_name, year, answer in tools_comment}
+    netflow = recursive_query(16674)
+    netflow = {(nren_name, year): answer.strip('" ') for answer_id, nren_name, year, answer in netflow}
+
+    for nren_name, year in tools.keys() | tools_comment.keys() | netflow.keys():
+        if nren_name not in nren_dict:
+            logger.warning(f'{nren_name} unknown. Skipping.')
+            continue
+
+        tool_descriptions = tools.get((nren_name, year), [])
+        comment = tools_comment.get((nren_name, year), "").replace("-", "")
+        if comment:
+            tool_descriptions.append(comment)
+            if "Other" in tool_descriptions:
+                tool_descriptions.remove("Other")
+            if "Other " in tool_descriptions:
+                tool_descriptions.remove("Other ")
+
+        new_entry = presentation_models.MonitoringTools(
+            nren=nren_dict[nren_name],
+            nren_id=nren_dict[nren_name].id,
+            year=year,
+            tool_descriptions=tool_descriptions,
+            netflow_processing_description=netflow.get((nren_name, year), "")
+        )
+        db.session.merge(new_entry)
+    db.session.commit()
+
+
 def _cli(app):
     with app.app_context():
         nren_dict = helpers.get_uppercase_nren_dict()
@@ -1225,6 +1258,7 @@ def _cli(app):
 
         transfer_fibre_light(nren_dict)
         transfer_network_map_urls(nren_dict)
+        transfer_monitoring_tools(nren_dict)
         transfer_traffic_statistics(nren_dict)
         transfer_siem_vendors(nren_dict)
         transfer_certificate_providers(nren_dict)
-- 
GitLab