From e05ee49e958a0809bb5cb0b525d71deb94ddc046 Mon Sep 17 00:00:00 2001 From: Tanner Prestegard <tanner.prestegard@ligo.org> Date: Sun, 1 Jul 2018 09:29:55 -0500 Subject: [PATCH] Adding serialized object to label alerts Adding serialized label object to label creation and removal alerts. This may not be permanent, but some users want this feature since the object contains a 'self' link which they use to tell alerts from different servers apart. --- gracedb/alerts/old_alert.py | 5 +++-- gracedb/alerts/superevent_utils.py | 4 ++-- gracedb/events/view_logic.py | 17 +++++++++++++---- gracedb/events/view_utils.py | 10 +++++----- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/gracedb/alerts/old_alert.py b/gracedb/alerts/old_alert.py index c08c7fbd1..74c7fee68 100644 --- a/gracedb/alerts/old_alert.py +++ b/gracedb/alerts/old_alert.py @@ -147,9 +147,10 @@ def issueAlertForUpdate(event, description, doxmpp, filename="", serialized_obje # XXX No emails or phone calls for this. Argh. # The only kind of serialized object relevant for a Label is an event. -def issueAlertForLabel(event, label, doxmpp, serialized_event=None, event_url=None): +# False - why not just send the labelling object? +def issueAlertForLabel(event, label, doxmpp, serialized_object=None, event_url=None): if doxmpp: - issueXMPPAlert(event, "", "label", label, serialized_event) + issueXMPPAlert(event, "", "label", label, serialized_object) # Email profileRecips = [] phoneRecips = [] diff --git a/gracedb/alerts/superevent_utils.py b/gracedb/alerts/superevent_utils.py index da8b9daf3..3050afcde 100644 --- a/gracedb/alerts/superevent_utils.py +++ b/gracedb/alerts/superevent_utils.py @@ -99,7 +99,7 @@ def issue_alert_for_superevent_label_creation(labelling, request=None): # Send alerts # NOTE: current alerts don't include an object (change this?) issue_alerts(labelling.superevent, alert_type="label", url=url, - description=description, serialized_object=None) + description=description, serialized_object=serialized_object) def issue_alert_for_superevent_label_removal(labelling, request=None): @@ -112,7 +112,7 @@ def issue_alert_for_superevent_label_removal(labelling, request=None): # Send alerts issue_alerts(labelling.superevent, alert_type="update", url=url, - description=description, serialized_object=None) + description=description, serialized_object=serialized_object) def issue_alert_for_superevent_voevent(voevent, request=None): diff --git a/gracedb/events/view_logic.py b/gracedb/events/view_logic.py index 9e496d29f..dab48bc6e 100644 --- a/gracedb/events/view_logic.py +++ b/gracedb/events/view_logic.py @@ -12,7 +12,8 @@ from .models import EMBBEventLog, EMGroup from .models import EMObservation, EMFootprint from .translator import handle_uploaded_data from .view_utils import _saveUploadedFile -from .view_utils import eventToDict, eventLogToDict, emObservationToDict +from .view_utils import eventToDict, eventLogToDict, emObservationToDict, \ + labelToDict from .permission_utils import assign_default_event_perms from alerts.old_alert import issueAlert, issueAlertForLabel, issueAlertForUpdate, \ @@ -214,8 +215,12 @@ def create_label(event, request, labelName, doAlert=True, doXMPP=True): logger.exception('Problem saving log message (%s)' % str(e)) d['error'] = str(e) + # Serialize the labelling object + serialized_label = labelToDict(labelling) + try: - issueAlertForLabel(event, label, doXMPP, event_url=event_url) + issueAlertForLabel(event, label, doXMPP, event_url=event_url, + serialized_object=serialized_label) except Exception as e: logger.exception('Problem issuing alert (%s)' % str(e)) d['warning'] = "Problem issuing alert (%s)" % str(e) @@ -258,11 +263,15 @@ def delete_label(event, request, labelName, doXMPP=True): logger.exception('Problem saving log message (%s)' % str(e)) d['error'] = str(e) + # Serialize deleted labelling object + serialized_label = labelToDict(this_label) + # send an XMPP alert, no email or phone alerts try: if doXMPP: - issueXMPPAlert(event, "", alert_type="label", - description="Label {0} removed".format(label.name)) + issueXMPPAlert(event, "", alert_type="update", + description="Label {0} removed".format(label.name), + serialized_object=serialized_label) except Exception as e: logger.exception('Problem issuing alert (%s)' % str(e)) d['warning'] = "Problem issuing alert (%s)" % str(e) diff --git a/gracedb/events/view_utils.py b/gracedb/events/view_utils.py index 0ec4b92c4..4e2b9a5f1 100644 --- a/gracedb/events/view_utils.py +++ b/gracedb/events/view_utils.py @@ -416,14 +416,14 @@ def eventLogToDict(log, request=None): } -def labelToDict(label, request=None): +def labelToDict(labelling, request=None): return { - "name" : label.label.name, - "creator" : label.creator.username, - "created" : label.created.strftime( + "name" : labelling.label.name, + "creator" : labelling.creator.username, + "created" : labelling.created.strftime( settings.GRACE_STRFTIME_FORMAT), "self" : reverse("labels", - args=[label.event.graceid(), label.label.name], + args=[labelling.event.graceid(), labelling.label.name], request=request), } -- GitLab