From eb5f561294eef9231f635e8b85ef0436fc896f54 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 13 Apr 2022 15:20:38 +0100 Subject: [PATCH] Use contentMap, if available, when showing post diff --- content.py | 31 +++++++++++++++++++++++++++---- tests.py | 8 ++++++-- webapp_post.py | 2 +- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/content.py b/content.py index f59112776..2adf09956 100644 --- a/content.py +++ b/content.py @@ -1463,7 +1463,8 @@ def content_diff(content: str, prev_content: str) -> str: def create_edits_html(edits_json: {}, post_json_object: {}, - translate: {}, timezone: str) -> str: + translate: {}, timezone: str, + system_language: str) -> str: """ Creates html showing historical edits made to a post """ if not edits_json: @@ -1471,20 +1472,42 @@ def create_edits_html(edits_json: {}, post_json_object: {}, if not has_object_dict(post_json_object): return '' if not post_json_object['object'].get('content'): - return '' + if not post_json_object['object'].get('contentMap'): + return '' edit_dates_list = [] for modified, item in edits_json.items(): edit_dates_list.append(modified) edit_dates_list.sort(reverse=True) edits_str = '' - content = remove_html(post_json_object['object']['content']) + content = None + if post_json_object['object'].get('contentMap'): + if post_json_object['object']['contentMap'].get(system_language): + content = \ + post_json_object['object']['contentMap'][system_language] + if not content: + if post_json_object['object'].get('content'): + content = post_json_object['object']['content'] + if not content: + return '' + content = remove_html(content) for modified in edit_dates_list: prev_json = edits_json[modified] if not has_object_dict(prev_json): continue + prev_content = None if not prev_json['object'].get('content'): + if not prev_json['object'].get('contentMap'): + continue + if prev_json['object'].get('contentMap'): + if prev_json['object']['contentMap'].get(system_language): + prev_content = \ + prev_json['object']['contentMap'][system_language] + if not prev_content: + if prev_json['object'].get('content'): + prev_content = prev_json['object']['content'] + if not prev_content: continue - prev_content = remove_html(prev_json['object']['content']) + prev_content = remove_html(prev_content) if content == prev_content: continue diff = content_diff(content, prev_content) diff --git a/tests.py b/tests.py index 9e8f9fdec..f8b3c768b 100644 --- a/tests.py +++ b/tests.py @@ -6945,6 +6945,7 @@ def _test_diff_content() -> None: '

' assert result == expected + system_language = "en" translate = { "SHOW EDITS": "SHOW EDITS" } @@ -6973,13 +6974,16 @@ def _test_diff_content() -> None: }, "2020-12-14T00:07:34Z": { "object": { - "content": content2, + "contentMap": { + "en": content2 + }, "published": "2020-12-14T00:07:34Z" } } } html_str = \ - create_edits_html(edits_json, post_json_object, translate, timezone) + create_edits_html(edits_json, post_json_object, translate, + timezone, system_language) assert html_str expected = \ '
SHOW EDITS' + \ diff --git a/webapp_post.py b/webapp_post.py index 448a73f85..e4e5b1c1b 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -1490,7 +1490,7 @@ def individual_post_as_html(signing_priv_key_pem: str, edits_json = load_json(edits_filename, 0, 1) if edits_json: edits_str = create_edits_html(edits_json, post_json_object, - translate, timezone) + translate, timezone, system_language) message_id_str = '' if message_id: