diff --git a/taiga/projects/history/freeze_impl.py b/taiga/projects/history/freeze_impl.py index 1af7bcf0..7b85b7c0 100644 --- a/taiga/projects/history/freeze_impl.py +++ b/taiga/projects/history/freeze_impl.py @@ -228,6 +228,9 @@ def userstory_freezer(us) -> dict: "tags": us.tags, "points": points, "from_issue": us.generated_from_issue_id, + "is_blocked": us.is_blocked, + "blocked_note": us.blocked_note, + "blocked_note_html": mdrender(us.project, us.blocked_note), } return snapshot @@ -249,6 +252,9 @@ def issue_freezer(issue) -> dict: "watchers": [x.pk for x in issue.watchers.all()], "attachments": extract_attachments(issue), "tags": issue.tags, + "is_blocked": issue.is_blocked, + "blocked_note": issue.blocked_note, + "blocked_note_html": mdrender(issue.project, issue.blocked_note), } return snapshot @@ -271,6 +277,9 @@ def task_freezer(task) -> dict: "tags": task.tags, "user_story": task.user_story_id, "is_iocaine": task.is_iocaine, + "is_blocked": task.is_blocked, + "blocked_note": task.blocked_note, + "blocked_note_html": mdrender(task.project, task.blocked_note), } return snapshot diff --git a/taiga/projects/history/models.py b/taiga/projects/history/models.py index 0cf9d0e5..462e3d45 100644 --- a/taiga/projects/history/models.py +++ b/taiga/projects/history/models.py @@ -99,6 +99,19 @@ class HistoryEntry(models.Model): result = {} users_keys = ["assigned_to", "owner"] + def resolve_diff_value(key): + value = None + diff = get_diff_of_htmls( + self.diff[key][0] or "", + self.diff[key][1] or "" + ) + + if diff: + key = "{}_diff".format(key) + value = (None, diff) + + return (key, value) + def resolve_value(field, key): data = self.values[field] key = str(key) @@ -114,24 +127,12 @@ class HistoryEntry(models.Model): # 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 == "content": - content_diff = get_diff_of_htmls( - self.diff[key][0], - self.diff[key][1] - ) - - if content_diff: - key = "content_diff" - value = (None, content_diff) + elif key == "content_diff": + continue + elif key == "blocked_note_diff": + continue + elif key in["description", "content", "blocked_note"]: + (key, value) = resolve_diff_value(key) elif key in users_keys: value = [resolve_value("users", x) for x in self.diff[key]] elif key == "watchers": diff --git a/taiga/projects/history/templates/emails/includes/fields_diff-text.jinja b/taiga/projects/history/templates/emails/includes/fields_diff-text.jinja index d53a205b..b2d23b7c 100644 --- a/taiga/projects/history/templates/emails/includes/fields_diff-text.jinja +++ b/taiga/projects/history/templates/emails/includes/fields_diff-text.jinja @@ -6,7 +6,9 @@ "backlog_order", "kanban_order", "taskboard_order", - "us_order" + "us_order", + "blocked_note_diff", + "blocked_note_html" ] %} {% for field_name, values in changed_fields.items() %} {% if field_name not in excluded_fields %} diff --git a/taiga/projects/history/templatetags/functions.py b/taiga/projects/history/templatetags/functions.py index c66ef67f..1938bb94 100644 --- a/taiga/projects/history/templatetags/functions.py +++ b/taiga/projects/history/templatetags/functions.py @@ -23,7 +23,8 @@ register = library.Library() EXTRA_FIELD_VERBOSE_NAMES = { "description_diff": _("description"), - "content_diff": _("content") + "content_diff": _("content"), + "blocked_note_diff": _("blocked note") }