Merge pull request #233 from taigaio/bug/1972/tasks-should-retain-all-history-in-their-full-view

Tasks should retain all history in their full view
remotes/origin/enhancement/email-actions
Jesús Espino 2015-02-03 13:02:52 +01:00
commit b0182ad7de
4 changed files with 33 additions and 20 deletions

View File

@ -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

View File

@ -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":

View File

@ -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 %}

View File

@ -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")
}