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: