From 58d9fefa72fc9e3d9d2e697b5150e989a9f6e5a8 Mon Sep 17 00:00:00 2001
From: Lennard Strohmeyer <lennard.strohmeyer@digitallearning.gmbh>
Date: Thu, 29 Jun 2023 13:07:34 +0200
Subject: [PATCH] #6: Provider-ID in zutreffenden Statements durch
 Provider-Namen ersetzen

---
 src/providers/views.py | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/providers/views.py b/src/providers/views.py
index a8d233f..cd3d140 100644
--- a/src/providers/views.py
+++ b/src/providers/views.py
@@ -367,6 +367,20 @@ def get_system_statements(collection, providers=[]):
     return collection.find(system_statement_query)
 
 
+def replace_provider_id(statement, providers):
+    if statement.get("actor", {}).get("mbox", "").startswith("system:"):
+        provider_id = int((statement.get("actor", {}).get("mbox", "").split("system:"))[1])
+        provider = next((x for x in providers if x.id == provider_id), None)
+        if provider:
+            statement["actor"]["mbox"] = "system:" + provider.name
+        else:
+            # fallback - return unmodified statement
+            return statement
+    else:
+        return statement
+
+
+
 class GetProviderData(APIView):
     """
     Endpoint that allows an analytics engine to obtain provider statements from the lrs.
@@ -477,7 +491,7 @@ class GetProviderData(APIView):
             cursor = collection.find(query).limit(page_size)
             data = {
                 "verbs": list(set(active_verbs)),
-                "statements": list(cursor),
+                "statements": list(map(replace_provider_id, list(cursor))),
                 "page_size": page_size,
             }
 
-- 
GitLab