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