From ac12c878edf5a8328bb8ba636b850f92b77f1b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Fri, 5 Sep 2014 12:44:55 +0200 Subject: [PATCH] Fix bug #868: Delete empty description_diff --- taiga/projects/history/models.py | 17 ++++++++++++++++- taiga/projects/history/services.py | 9 --------- taiga/projects/notifications/mixins.py | 1 - 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/taiga/projects/history/models.py b/taiga/projects/history/models.py index ff344b2f..cbbb5085 100644 --- a/taiga/projects/history/models.py +++ b/taiga/projects/history/models.py @@ -21,6 +21,8 @@ from django.db.models.loading import get_model from django.utils.functional import cached_property from django_pgjson.fields import JsonField +from taiga.mdrender.service import get_diff_of_htmls + from .choices import HistoryType from .choices import HISTORY_TYPE_CHOICES @@ -82,7 +84,20 @@ class HistoryEntry(models.Model): for key in self.diff: value = None - if key in users_keys: + # Note: Hack to prevent description_diff propagation + # on old HistoryEntry objects. + if key == "description_diff": + continue + elif key == "description": + description_diff = get_diff_of_htmls( + self.diff[key][0], + self.diff[key][1] + ) + + if description_diff: + key = "description_diff" + value = (None, description_diff) + elif key in users_keys: value = [resolve_value("users", x) for x in self.diff[key]] elif key == "watchers": value = [[resolve_value("users", x) for x in self.diff[key][0]], diff --git a/taiga/projects/history/services.py b/taiga/projects/history/services.py index 775604d4..e04068ed 100644 --- a/taiga/projects/history/services.py +++ b/taiga/projects/history/services.py @@ -39,7 +39,6 @@ from django.db.models.loading import get_model from django.db import transaction as tx from taiga.mdrender.service import render as mdrender -from taiga.mdrender.service import get_diff_of_htmls from taiga.base.utils.db import get_typename_for_model_class from .models import HistoryType @@ -161,14 +160,6 @@ def make_diff(oldobj:FrozenObj, newobj:FrozenObj) -> FrozenDiff: if key not in first: diff[key] = (not_found_value, second[key]) - if "description" in diff: - description_diff = get_diff_of_htmls( - diff["description"][0], - diff["description"][1] - ) - if description_diff: - diff["description_diff"] = (not_found_value, description_diff) - return FrozenDiff(newobj.key, diff, newobj.snapshot) diff --git a/taiga/projects/notifications/mixins.py b/taiga/projects/notifications/mixins.py index e0a796ef..2db9007f 100644 --- a/taiga/projects/notifications/mixins.py +++ b/taiga/projects/notifications/mixins.py @@ -43,7 +43,6 @@ class WatchedResourceMixin(object): cases on actions methods that not uses standard `post_save` hook of drf resources. """ - if history is None: history = self.get_last_history()