コード例 #1
0
ファイル: bugtask.py プロジェクト: pombreda/UnnaturalCodeFork
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)
コード例 #2
0
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)
コード例 #3
0
    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())
コード例 #4
0
    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())
コード例 #5
0
    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())
コード例 #6
0
    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())
コード例 #7
0
    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())
コード例 #8
0
    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())