From b48ac75003076f5479cc7c7438e585a42d75d922 Mon Sep 17 00:00:00 2001
From: Jonah Kanner <jonah.kanner@ligo.org>
Date: Wed, 22 May 2019 17:53:59 -0500
Subject: [PATCH] working first draft

---
 gracedb/superevents/views.py              | 49 +++++++++++++++++++----
 gracedb/templates/superevents/public.html |  4 +-
 2 files changed, 45 insertions(+), 8 deletions(-)

diff --git a/gracedb/superevents/views.py b/gracedb/superevents/views.py
index 5fbcc231e..0bb7307dc 100644
--- a/gracedb/superevents/views.py
+++ b/gracedb/superevents/views.py
@@ -113,6 +113,7 @@ class SupereventFileList(SupereventDetailView):
         context['file_list'] = file_list
 
         return context
+
 # NOTE: file "detail" or downloads (and associated permissions) are
 # handled through the API. Links on the file list page point to the
 # API file download page.
@@ -123,21 +124,55 @@ class SupereventPublic(ListView):
     filter_permissions = ['superevents.view_superevent']
     log_view_permission = 'superevents.view_log'    
 
+    def get_queryset(self, **kwargs):
+        # -- Query only for public events
+        qs = Superevent.objects.filter(is_exposed=True, category='T')  #-- Change cateogry to P for production
+        return qs
+        
     def get_context_data(self, **kwargs):
         # Get base context
         context = ListView.get_context_data(self, **kwargs)
 
-        #-- For each superevent, get list of log messages 
+        #-- For each superevent, get list of log messages and construct pastro string
+        candidates = 0
         for se in context['object_list']:
             viewable_logs = get_objects_for_user(self.request.user,
-                                                 self.log_view_permission, se.log_set.all()).filter(tags__name='em_follow') #-- want this label to be analyst_comment
-            commentlist = ''
-            for log in viewable_logs:
-                commentlist += log.comment
-                commentlist += '--'
+                                                 self.log_view_permission,
+                                                 se.log_set.all()).filter(tags__name='em_follow') #-- change to analyst_comment
 
-            se.comments = commentlist
+            se.comments = ' ** '.join([log.comment for log in viewable_logs]) 
+            
+            #-- Get list of voevents
+            voevents = se.voevent_set.all()
+
+            # -- Filter out retractions
+            good_voevents = sorted([voe for voe in voevents if voe.voevent_type != 'RE'],key=lambda voe:voe.N)
+            
+            # -- Find retractions
+            retraction_list = [voe for voe in voevents if voe.voevent_type == 'RE']
+            if len(retraction_list) > 0:
+                se.retract = True
+            else:
+                se.retract = False
+                candidates += 1
             
+            # -- Read out probabilities
+            voe = good_voevents[-1]
+            pastro_values = [ ("BNS",voe.prob_bns), ("NSBH",voe.prob_nsbh),
+                              ("BBH", voe.prob_bbh), ("Terrestrial", voe.prob_terrestrial),
+                              ("MassGap", voe.prob_mass_gap) ]
+
+            sourcelist = []
+            for key, value in pastro_values:
+                if value > 0.01:
+                    prob = int(round(100*value))
+                    if prob == 100: prob = '>99'
+                    sourcestr = "{0} ({1}%)".format(key, prob)
+                    sourcelist.append(sourcestr)
+            se.sourcetypes = ', '.join(sourcelist)
+            se.N = voe.N
+
+        context['candidates']=candidates
         return context
 
 
diff --git a/gracedb/templates/superevents/public.html b/gracedb/templates/superevents/public.html
index f3ccfb697..d3a768c35 100644
--- a/gracedb/templates/superevents/public.html
+++ b/gracedb/templates/superevents/public.html
@@ -44,7 +44,9 @@
 {% endblock %}
 
 {% block content %}
-<h3>O3 detection candidates: {{ meta.candidates }}</h3>
+<h1>LIGO/Virgo Public Alerts</h1>
+
+<h3>O3 detection candidates: {{ candidates }}</h3>
 <br/><br/>
 
 
-- 
GitLab