diff --git a/gracedb/alerts/issuers/base.py b/gracedb/alerts/issuers/base.py index 125d5b3a9b3c75db48690bdc4ced72fa75803e1e..740eac0d1b81a77298cdf89ba749dae5a65a1038 100644 --- a/gracedb/alerts/issuers/base.py +++ b/gracedb/alerts/issuers/base.py @@ -5,7 +5,7 @@ class AlertIssuer(object): serializer_class = None alert_types = None - def __init__(self, obj, alert_type, *args, **kwargs): + def __init__(self, obj, alert_type): # Check alert type if alert_type not in self.alert_types: raise ValueError('alert_type should be in {0}'.format( @@ -18,7 +18,7 @@ class AlertIssuer(object): def serialize_obj(self): return self.serializer_class(self.obj).data - def issue_alerts(self): + def issue_alerts(self, **kwargs): # Should be overridden in derived classes return NotImplemented diff --git a/gracedb/alerts/issuers/events.py b/gracedb/alerts/issuers/events.py index 87e5610dfc2350c1442655174665e23ddbe19c4a..d3caf1b1a023ae9f754d4b0b3a00aae48f4a6efb 100644 --- a/gracedb/alerts/issuers/events.py +++ b/gracedb/alerts/issuers/events.py @@ -38,9 +38,9 @@ class AlertIssuerWithParentEvent(AlertIssuerWithParentObject): # Make sure we have the event "subclass" return self.obj.event.get_subclass_or_self() - def issue_alerts(self): + def issue_alerts(self, **kwargs): issue_alerts(self.get_parent_obj(), self.alert_type, - self.serialize_obj(), self.serialize_parent()) + self.serialize_obj(), self.serialize_parent(), **kwargs) class EventAlertIssuer(AlertIssuerWithParentEvent): @@ -66,10 +66,10 @@ class EventLabelAlertIssuer(AlertIssuerWithParentEvent): serializer_class = staticmethod(labelToDict) alert_types = ['label_added', 'label_removed'] - def issue_alerts(self): + def issue_alerts(self, **kwargs): issue_alerts(self.get_parent_obj(), self.alert_type, self.serialize_obj(), self.serialize_parent(), - label=self.obj.label) + label=self.obj.label, **kwargs) class EventVOEventAlertIssuer(AlertIssuerWithParentEvent): diff --git a/gracedb/alerts/issuers/superevents.py b/gracedb/alerts/issuers/superevents.py index 861390be125a669bb5820590955af6745cb1a5ef..4055e30d504a8b6b5b5e5f9269c17d7dfbfb3987 100644 --- a/gracedb/alerts/issuers/superevents.py +++ b/gracedb/alerts/issuers/superevents.py @@ -20,9 +20,9 @@ class AlertIssuerWithParentSuperevent(AlertIssuerWithParentObject): self.obj.__class__.__name__)) return self.obj.superevent - def issue_alerts(self): + def issue_alerts(self, **kwargs): issue_alerts(self.get_parent_obj(), self.alert_type, - self.serialize_obj(), self.serialize_parent()) + self.serialize_obj(), self.serialize_parent(), **kwargs) class SupereventAlertIssuer(AlertIssuerWithParentSuperevent): @@ -43,10 +43,10 @@ class SupereventLabelAlertIssuer(AlertIssuerWithParentSuperevent): serializer_class = SupereventLabelSerializer alert_types = ['label_added', 'label_removed'] - def issue_alerts(self): + def issue_alerts(self, **kwargs): issue_alerts(self.get_parent_obj(), self.alert_type, self.serialize_obj(), self.serialize_parent(), - label=self.obj.label) + label=self.obj.label, **kwargs) class SupereventVOEventAlertIssuer(AlertIssuerWithParentSuperevent): diff --git a/gracedb/api/v1/events/views.py b/gracedb/api/v1/events/views.py index 178ef7f09a318865cb833fe4bf08ca53ac7caa33..e21c174efff482776b1d0fc301005f8a208080e4 100644 --- a/gracedb/api/v1/events/views.py +++ b/gracedb/api/v1/events/views.py @@ -576,6 +576,10 @@ class EventDetail(InheritPermissionsAPIView): except Exception, e: return Response(str(e)) + # Compile far and nscand for alerts + old_far = event.far + old_nscand = event.is_ns_candidate() + # messages = [] # if event.group.name != request.data['group']: # messages += [ @@ -619,7 +623,8 @@ class EventDetail(InheritPermissionsAPIView): event.save() # Issue alert - EventAlertIssuer(event, alert_type='update').issue_alerts() + EventAlertIssuer(event, alert_type='update').issue_alerts( + old_far=old_far, old_nscand=old_nscand) return Response(status=status.HTTP_202_ACCEPTED) diff --git a/gracedb/superevents/utils.py b/gracedb/superevents/utils.py index b7aeec51bdf55eb1db88317fe9322139164f3be7..8ef17da3b6a017a90b66a50ad5b80fe54f5c146a 100644 --- a/gracedb/superevents/utils.py +++ b/gracedb/superevents/utils.py @@ -142,6 +142,7 @@ def update_superevent(superevent, updater, add_log_message=True, # Write a log message # 'if' statement to handle patch requests which don't change entire object + superevent_alert_kwargs = {} if add_log_message: updates = ["{name}: {old} -> {new}".format(name=k, old=old_params[k], new=new_params[k]) for k in new_params.keys() @@ -177,9 +178,17 @@ def update_superevent(superevent, updater, add_log_message=True, EventAlertIssuer(new_params['preferred_event'], alert_type='selected_as_preferred').issue_alerts() + # If preferred event has changed, compile kwargs for superevent + # alert + superevent_alert_kwargs['old_far'] = \ + old_params['preferred_event'].far + superevent_alert_kwargs['old_nscand'] = \ + old_params['preferred_event'].is_ns_candidate() + # Superevent alerts if issue_alert: - SupereventAlertIssuer(superevent, alert_type='update').issue_alerts() + SupereventAlertIssuer(superevent, alert_type='update').issue_alerts( + **superevent_alert_kwargs) return superevent