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