From eff36daec9bc492542f79f3ec192f5d2876d8db1 Mon Sep 17 00:00:00 2001
From: Remco Tukker <remco.tukker@geant.org>
Date: Fri, 22 Sep 2023 17:27:07 +0200
Subject: [PATCH] last db publish model as the data in the excel turned out to
 be insufficient

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

diff --git a/compendium_v2/publishers/survey_publisher_old_db_2022.py b/compendium_v2/publishers/survey_publisher_old_db_2022.py
index 5c72d1c5..b6ceea90 100644
--- a/compendium_v2/publishers/survey_publisher_old_db_2022.py
+++ b/compendium_v2/publishers/survey_publisher_old_db_2022.py
@@ -1167,6 +1167,38 @@ def transfer_network_automation(nren_dict):
     db.session.commit()
 
 
+def transfer_network_function_virtualisation(nren_dict):
+    rows = recursive_query(16754)
+    types = recursive_query(16755)
+    types = {(nren_name, year): json.loads(answer) for answer_id, nren_name, year, answer in types}
+    types_comment = recursive_query(16756)
+    types_comment = {(nren_name, year): answer.strip('" ') for answer_id, nren_name, year, answer in types_comment}
+
+    for answer_id, nren_name, year, answer in rows:
+        if nren_name not in nren_dict:
+            logger.warning(f'{nren_name} unknown. Skipping.')
+            continue
+
+        nfv = YesNoPlanned[answer.strip('"').lower()]
+        specifics = types.get((nren_name, year), [])
+        specifics = [s for s in specifics if s]
+        comment = types_comment.get((nren_name, year), "").replace("-", "")
+        if comment:
+            specifics.append(comment)
+            if "Other" in specifics:
+                specifics.remove("Other")
+
+        new_entry = presentation_models.NetworkFunctionVirtualisation(
+            nren=nren_dict[nren_name],
+            nren_id=nren_dict[nren_name].id,
+            year=year,
+            nfv=nfv,
+            nfv_specifics=specifics
+        )
+        db.session.merge(new_entry)
+    db.session.commit()
+
+
 def _cli(app):
     with app.app_context():
         nren_dict = helpers.get_uppercase_nren_dict()
@@ -1200,7 +1232,8 @@ def _cli(app):
         transfer_pert_team(nren_dict)
         transfer_alien_wave(nren_dict)
         transfer_external_connections(nren_dict)
-        # traffic ratio was freeform text
+        # traffic ratio was freeform text so we don't transfer it
+        transfer_network_function_virtualisation(nren_dict)
         transfer_network_automation(nren_dict)
 
 
-- 
GitLab