Use contentMap, if available, when showing post diff

main
Bob Mottram 2022-04-13 15:20:38 +01:00
parent 320a02d95f
commit eb5f561294
3 changed files with 34 additions and 7 deletions

View File

@ -1463,7 +1463,8 @@ def content_diff(content: str, prev_content: str) -> str:
def create_edits_html(edits_json: {}, post_json_object: {}, 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 """ Creates html showing historical edits made to a post
""" """
if not edits_json: 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): if not has_object_dict(post_json_object):
return '' return ''
if not post_json_object['object'].get('content'): if not post_json_object['object'].get('content'):
return '' if not post_json_object['object'].get('contentMap'):
return ''
edit_dates_list = [] edit_dates_list = []
for modified, item in edits_json.items(): for modified, item in edits_json.items():
edit_dates_list.append(modified) edit_dates_list.append(modified)
edit_dates_list.sort(reverse=True) edit_dates_list.sort(reverse=True)
edits_str = '' 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: for modified in edit_dates_list:
prev_json = edits_json[modified] prev_json = edits_json[modified]
if not has_object_dict(prev_json): if not has_object_dict(prev_json):
continue continue
prev_content = None
if not prev_json['object'].get('content'): 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 continue
prev_content = remove_html(prev_json['object']['content']) prev_content = remove_html(prev_content)
if content == prev_content: if content == prev_content:
continue continue
diff = content_diff(content, prev_content) diff = content_diff(content, prev_content)

View File

@ -6945,6 +6945,7 @@ def _test_diff_content() -> None:
'<label class="diff_remove">- This is another line</label></p>' '<label class="diff_remove">- This is another line</label></p>'
assert result == expected assert result == expected
system_language = "en"
translate = { translate = {
"SHOW EDITS": "SHOW EDITS" "SHOW EDITS": "SHOW EDITS"
} }
@ -6973,13 +6974,16 @@ def _test_diff_content() -> None:
}, },
"2020-12-14T00:07:34Z": { "2020-12-14T00:07:34Z": {
"object": { "object": {
"content": content2, "contentMap": {
"en": content2
},
"published": "2020-12-14T00:07:34Z" "published": "2020-12-14T00:07:34Z"
} }
} }
} }
html_str = \ 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 assert html_str
expected = \ expected = \
'<details><summary class="cw">SHOW EDITS</summary>' + \ '<details><summary class="cw">SHOW EDITS</summary>' + \

View File

@ -1490,7 +1490,7 @@ def individual_post_as_html(signing_priv_key_pem: str,
edits_json = load_json(edits_filename, 0, 1) edits_json = load_json(edits_filename, 0, 1)
if edits_json: if edits_json:
edits_str = create_edits_html(edits_json, post_json_object, edits_str = create_edits_html(edits_json, post_json_object,
translate, timezone) translate, timezone, system_language)
message_id_str = '' message_id_str = ''
if message_id: if message_id: