def notify_bugtask_edited(modified_bugtask, event): """Notify CC'd subscribers of this bug that something has changed on this task. modified_bugtask must be an IBugTask. event must be an IObjectModifiedEvent. """ bugtask_delta = event.object.getDelta(event.object_before_modification) bug_delta = BugDelta( bug=event.object.bug, bugurl=canonical_url(event.object.bug), bugtask_deltas=bugtask_delta, user=IPerson(event.user)) event_creator = IPerson(event.user) previous_subscribers = event.object_before_modification.bug_subscribers current_subscribers = event.object.bug_subscribers prev_subs_set = set(previous_subscribers) cur_subs_set = set(current_subscribers) new_subs = cur_subs_set.difference(prev_subs_set) add_bug_change_notifications( bug_delta, old_bugtask=event.object_before_modification, new_subscribers=new_subs) send_bug_details_to_new_bug_subscribers( event.object.bug, previous_subscribers, current_subscribers, event_creator=event_creator)
def notify_bugtask_edited(modified_bugtask, event): """Notify CC'd subscribers of this bug that something has changed on this task. modified_bugtask must be an IBugTask. event must be an IObjectModifiedEvent. """ bugtask_delta = event.object.getDelta(event.object_before_modification) bug_delta = BugDelta(bug=event.object.bug, bugurl=canonical_url(event.object.bug), bugtask_deltas=bugtask_delta, user=IPerson(event.user)) event_creator = IPerson(event.user) previous_subscribers = event.object_before_modification.bug_subscribers current_subscribers = event.object.bug_subscribers prev_subs_set = set(previous_subscribers) cur_subs_set = set(current_subscribers) new_subs = cur_subs_set.difference(prev_subs_set) add_bug_change_notifications(bug_delta, old_bugtask=event.object_before_modification, new_subscribers=new_subs) send_bug_details_to_new_bug_subscribers(event.object.bug, previous_subscribers, current_subscribers, event_creator=event_creator)
def test_add_bug_change_notifications_metadata(self): # Changing a bug description is considered to have change_level # of BugNotificationLevel.METADATA. bug_delta = self.createDelta(description={ 'new': 'new description', 'old': self.bug.description, }) add_bug_change_notifications(bug_delta) self.assertContentEqual([self.metadata_subscriber], self.getNotifiedPersons())
def test_add_bug_change_notifications_metadata(self): # Changing a bug description is considered to have change_level # of BugNotificationLevel.METADATA. bug_delta = self.createDelta( description={ 'new': 'new description', 'old': self.bug.description, }) add_bug_change_notifications(bug_delta) self.assertContentEqual( [self.metadata_subscriber], self.getNotifiedPersons())
def test_add_bug_change_notifications_lifecycle(self): # Changing a bug description is considered to have change_level # of BugNotificationLevel.LIFECYCLE. bugtask_delta = BugTaskDelta(bugtask=self.bugtask, status={ 'old': BugTaskStatus.NEW, 'new': BugTaskStatus.FIXRELEASED, }) bug_delta = self.createDelta(bugtask_deltas=bugtask_delta) add_bug_change_notifications(bug_delta) # Both a LIFECYCLE and METADATA subscribers get notified. self.assertContentEqual( [self.metadata_subscriber, self.lifecycle_subscriber], self.getNotifiedPersons())
def test_add_bug_change_notifications_duplicate_metadata(self): # Marking a bug as a duplicate of a unresolved bug is # a lifecycle change. duplicate_of = self.factory.makeBug() duplicate_of.default_bugtask.transitionToStatus( BugTaskStatus.INPROGRESS, self.user) bug_delta = self.createDelta(user=self.bug.owner, duplicateof={ 'old': None, 'new': duplicate_of, }) add_bug_change_notifications(bug_delta) # Only METADATA subscribers get notified. self.assertContentEqual([self.metadata_subscriber], self.getNotifiedPersons())
def test_add_bug_change_notifications_lifecycle(self): # Changing a bug description is considered to have change_level # of BugNotificationLevel.LIFECYCLE. bugtask_delta = BugTaskDelta( bugtask=self.bugtask, status={ 'old': BugTaskStatus.NEW, 'new': BugTaskStatus.FIXRELEASED, }) bug_delta = self.createDelta( bugtask_deltas=bugtask_delta) add_bug_change_notifications(bug_delta) # Both a LIFECYCLE and METADATA subscribers get notified. self.assertContentEqual( [self.metadata_subscriber, self.lifecycle_subscriber], self.getNotifiedPersons())
def test_add_bug_change_notifications_duplicate_metadata(self): # Marking a bug as a duplicate of a unresolved bug is # a lifecycle change. duplicate_of = self.factory.makeBug() duplicate_of.default_bugtask.transitionToStatus( BugTaskStatus.INPROGRESS, self.user) bug_delta = self.createDelta( user=self.bug.owner, duplicateof={ 'old': None, 'new': duplicate_of, }) add_bug_change_notifications(bug_delta) # Only METADATA subscribers get notified. self.assertContentEqual( [self.metadata_subscriber], self.getNotifiedPersons())