From d3fbde77eda9739c9128b7779e1a71b40e3b6d84 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20J=C3=BCrges?= <jurges@astron.nl>
Date: Mon, 4 Sep 2017 12:45:21 +0000
Subject: [PATCH] Task #11173:  refined the SQL query and the output.  URL is
 still missing.

---
 .../MoMQueryServiceServer/momqueryservice.py  |  8 +++--
 .../restinterface/triggerinterface/views.py   | 34 +++++++++++++------
 2 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/SAS/MoM/MoMQueryService/MoMQueryServiceServer/momqueryservice.py b/SAS/MoM/MoMQueryService/MoMQueryServiceServer/momqueryservice.py
index 09d0b885d30..76ac1582c4d 100755
--- a/SAS/MoM/MoMQueryService/MoMQueryServiceServer/momqueryservice.py
+++ b/SAS/MoM/MoMQueryService/MoMQueryServiceServer/momqueryservice.py
@@ -592,14 +592,16 @@ where project.mom2id = %s and (project_role.name = "Pi" or project_role.name = "
         parameters = (user_name, )
         rows = self._executeSelectQuery(query, parameters)
 
-        result = []
+        result = {}
         for row in rows:
             mom_id = str(row['mom_id'])
             projectName = row['projectname']
             trigger_id = str(row['id'])
-            result.append( (mom_id, projectName, trigger_id) )
 
-        logger.info('Received the following triggers from the DB: %s', result)
+            result[trigger_id] = {'project_name': projectName, 'mom_id': mom_id}
+
+        logger.debug('Received the following triggers from the DB: %s', result)
+
         return result
 
     def getProjectTaskIds(self, project_mom2id):
diff --git a/SAS/TriggerServices/django_rest/restinterface/triggerinterface/views.py b/SAS/TriggerServices/django_rest/restinterface/triggerinterface/views.py
index ee11a177b84..e9864f4bae0 100644
--- a/SAS/TriggerServices/django_rest/restinterface/triggerinterface/views.py
+++ b/SAS/TriggerServices/django_rest/restinterface/triggerinterface/views.py
@@ -44,24 +44,36 @@ class TriggerListView(views.APIView):
 
     def get(self, request, format=None, **kwargs):
         logger.debug('got GET from -> ' + str(request.META['REMOTE_ADDR']))
-        triggers = momrpc.get_triggers(str(request.user))
+        result = momrpc.get_triggers(str(request.user))
 
         # Add the MoM URL for the project.
+        # result = { "trigger_id", ("project_name", "mom_id")}
+        # -> new_result["mom_id"]["trigger_id"] = {'project_name': project_name, 'url': URL}
         # TODO Add the real URL!
-        triggers_with_url = []
-        for row in triggers:
-            triggers_with_url.append((row[0], row[1], row[2], "http://---"))
+        mom_ids = {}
+        for trigger_id, trigger_details in result.iteritems():
+            project_name = trigger_details['project_name']
+            mom_id = trigger_details['mom_id']
+            url = 'http://---'
+            # Initialise the dict at [mom_id][]
+            if mom_id not in mom_ids:
+                mom_ids[mom_id] = {}
+            mom_ids[mom_id][trigger_id] = {'project_name': project_name, 'url': url}
 
         # If the requested format is not HTML return the triggers unmodified.
-        if 'format' not in request.GET or request.GET['format'] != "html":
-            return Response(triggers_with_url)
+        if 'format' not in request.GET or request.GET['format'] != 'html':
+            return Response(mom_ids)
 
         # The HTML representation of the triggers gets a bit beautified.
-        htmlContent = "<h2>LOFAR triggers</h2><p>"
-        for trigger in triggers_with_url:
-            htmlContent += "MoM id = " + trigger[0] + ", project name = " + trigger[1] + ", trigger id = " + trigger[2] + ", URL = " + trigger[3]
-            htmlContent += "</br>"
-        htmlContent +="</p>"
+        htmlContent = '<h2>LOFAR triggers</h2>'
+        for mom_id, mom_details in mom_ids.iteritems():
+            htmlContent += '<p>' + 'MoM id = ' + mom_id
+            for trigger_id, trigger_details in mom_details.iteritems():
+                htmlContent += '<br>trigger id = ' + trigger_id + \
+                ', project name = ' + trigger_details['project_name'] + \
+                ', URL = ' + trigger_details['url'] + '</br>'
+            htmlContent += '</p>'
+
         return Response(htmlContent)
 
     def post(self, request, format=None, **kwargs):
-- 
GitLab