From 1dd63a5214b803b97bd32b0dd90563d72b88fba7 Mon Sep 17 00:00:00 2001
From: Martin Burchell <martinb@aptivate.org>
Date: Wed, 29 Jul 2015 15:31:05 +0100
Subject: [PATCH] Fixed last_modified date for item updated on term

---
 django/website/data_layer/models.py           | 13 ++++++++++---
 django/website/data_layer/tests/item_tests.py | 14 +++++++++++++-
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/django/website/data_layer/models.py b/django/website/data_layer/models.py
index 3970173f..e669be8e 100644
--- a/django/website/data_layer/models.py
+++ b/django/website/data_layer/models.py
@@ -55,6 +55,13 @@ Item = Message
 @receiver(models.signals.m2m_changed, sender=Item.terms.through,
           dispatch_uid="data_layer.models.terms_signal_handler")
 def terms_signal_handler(sender, **kwargs):
-    if kwargs.get('action') == 'post_add':
-        instance = kwargs.get('instance')
-        instance.note_external_modification()
+    if kwargs.get('action') != 'post_add':
+        return
+
+    if kwargs.get('reverse'):
+        items = Item.objects.filter(pk__in=kwargs.get('pk_set'))
+    else:
+        items = [kwargs.get('instance')]
+
+    for item in items:
+        item.note_external_modification()
diff --git a/django/website/data_layer/tests/item_tests.py b/django/website/data_layer/tests/item_tests.py
index 6ac1c7f8..306af1b1 100644
--- a/django/website/data_layer/tests/item_tests.py
+++ b/django/website/data_layer/tests/item_tests.py
@@ -56,10 +56,22 @@ def test_last_modified_date_updates_on_body_change(item, mock_time_now):
 
 
 @pytest.mark.django_db
-def test_last_modified_date_updates_on_category_change(item, mock_time_now):
+def test_last_modified_date_updates_on_item_category_change(
+        item, mock_time_now):
     with patch('django.utils.timezone.now', new=mock_time_now):
         orig_last_modified = last_modified(item)
         term = TermFactory()
         item.terms.add(term)
 
         assert num_updates(orig_last_modified, last_modified(item)) == 1
+
+
+@pytest.mark.django_db
+def test_last_modified_date_updates_on_category_item_change(
+        item, mock_time_now):
+    with patch('django.utils.timezone.now', new=mock_time_now):
+        orig_last_modified = last_modified(item)
+        term = TermFactory()
+        term.items.add(item)
+
+        assert num_updates(orig_last_modified, last_modified(item)) == 1
-- 
GitLab