diff options
Diffstat (limited to 'patchwork')
-rw-r--r-- | patchwork/models.py | 6 | ||||
-rw-r--r-- | patchwork/signals.py | 3 | ||||
-rw-r--r-- | patchwork/tests/test_events.py | 7 |
3 files changed, 15 insertions, 1 deletions
diff --git a/patchwork/models.py b/patchwork/models.py index b4f3bef..7f0efd4 100644 --- a/patchwork/models.py +++ b/patchwork/models.py @@ -498,9 +498,13 @@ class Patch(Submission): return False if user in [self.submitter.user, self.delegate]: + self._edited_by = user return True - return self.project.is_editable(user) + if self.project.is_editable(user): + self._edited_by = user + return True + return False @property def combined_check_state(self): diff --git a/patchwork/signals.py b/patchwork/signals.py index 666199b..73ddfa5 100644 --- a/patchwork/signals.py +++ b/patchwork/signals.py @@ -93,6 +93,7 @@ def create_patch_state_changed_event(sender, instance, raw, **kwargs): return Event.objects.create( category=Event.CATEGORY_PATCH_STATE_CHANGED, project=patch.project, + actor=getattr(patch, '_edited_by', None), patch=patch, previous_state=before, current_state=after) @@ -116,6 +117,7 @@ def create_patch_delegated_event(sender, instance, raw, **kwargs): return Event.objects.create( category=Event.CATEGORY_PATCH_DELEGATED, project=patch.project, + actor=getattr(patch, '_edited_by', None), patch=patch, previous_delegate=before, current_delegate=after) @@ -184,6 +186,7 @@ def create_check_created_event(sender, instance, created, raw, **kwargs): return Event.objects.create( category=Event.CATEGORY_CHECK_CREATED, project=check.patch.project, + actor=check.user, patch=check.patch, created_check=check) diff --git a/patchwork/tests/test_events.py b/patchwork/tests/test_events.py index e5c40b5..415237f 100644 --- a/patchwork/tests/test_events.py +++ b/patchwork/tests/test_events.py @@ -110,8 +110,10 @@ class PatchChangedTest(_BaseTestCase): patch = utils.create_patch(series=None) old_state = patch.state new_state = utils.create_state() + actor = utils.create_maintainer(project=patch.project) patch.state = new_state + self.assertTrue(patch.is_editable(actor)) patch.save() events = _get_events(patch=patch) @@ -120,6 +122,7 @@ class PatchChangedTest(_BaseTestCase): self.assertEqual(events[1].category, Event.CATEGORY_PATCH_STATE_CHANGED) self.assertEqual(events[1].project, patch.project) + self.assertEqual(events[1].actor, actor) self.assertEventFields(events[1], previous_state=old_state, current_state=new_state) @@ -127,10 +130,12 @@ class PatchChangedTest(_BaseTestCase): # purposefully setting series to None to minimize additional events patch = utils.create_patch(series=None) delegate_a = utils.create_user() + actor = utils.create_maintainer(project=patch.project) # None -> Delegate A patch.delegate = delegate_a + self.assertTrue(patch.is_editable(actor)) patch.save() events = _get_events(patch=patch) @@ -139,6 +144,7 @@ class PatchChangedTest(_BaseTestCase): self.assertEqual(events[1].category, Event.CATEGORY_PATCH_DELEGATED) self.assertEqual(events[1].project, patch.project) + self.assertEqual(events[1].actor, actor) self.assertEventFields(events[1], current_delegate=delegate_a) delegate_b = utils.create_user() @@ -175,6 +181,7 @@ class CheckCreatedTest(_BaseTestCase): self.assertEqual(events.count(), 1) self.assertEqual(events[0].category, Event.CATEGORY_CHECK_CREATED) self.assertEqual(events[0].project, check.patch.project) + self.assertEqual(events[0].actor, check.user) self.assertEventFields(events[0]) |