diff --git a/daemon.py b/daemon.py index d2ec5e5f0..01f0d3285 100644 --- a/daemon.py +++ b/daemon.py @@ -11864,8 +11864,8 @@ class PubServer(BaseHTTPRequestHandler): self._login_headers('text/html', msglen, calling_domain) self._write(msg) - self._404() self.server.getreq_busy = False + self._redirect_headers(post_id, None, calling_domain) return True def _show_individual_at_post(self, ssml_getreq: bool, authorized: bool, diff --git a/webapp_post.py b/webapp_post.py index 476db3adb..98ff74049 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -1117,7 +1117,8 @@ def _boost_own_post_html(translate: {}) -> str: def _announce_unattributed_html(translate: {}, - post_json_object: {}) -> str: + post_json_object: {}, + nickname: str) -> str: """Returns the html for an announce title where there is no attribution on the announced post """ @@ -1125,30 +1126,35 @@ def _announce_unattributed_html(translate: {}, if translate.get(announces_str): announces_str = translate[announces_str] post_id = remove_id_ending(post_json_object['object']['id']) + post_link = '/users/' + nickname + '?convthread=' + \ + post_id.replace('/', '--') return ' ' + \
         announces_str + '\n' + \ - ' @unattributed\n' def _announce_with_display_name_html(translate: {}, post_json_object: {}, - announce_display_name: str) -> str: + announce_display_name: str, + nickname: str) -> str: """Returns html for an announce having a display name """ announces_str = 'announces' if translate.get(announces_str): announces_str = translate[announces_str] post_id = remove_id_ending(post_json_object['object']['id']) + post_link = '/users/' + nickname + '?convthread=' + \ + post_id.replace('/', '--') return ' ' + \
         announces_str + '\n' + \ - ' ' + \ '\n' @@ -1182,7 +1188,8 @@ def _get_post_title_announce_html(base_dir: str, # has no attribution if not obj_json.get('attributedTo'): - title_str += _announce_unattributed_html(translate, post_json_object) + title_str += \ + _announce_unattributed_html(translate, post_json_object, nickname) return (title_str, reply_avatar_image_in_post, container_class_icons, container_class) @@ -1202,7 +1209,8 @@ def _get_post_title_announce_html(base_dir: str, if attributed_to: announce_nickname = get_nickname_from_actor(attributed_to) if not announce_nickname: - title_str += _announce_unattributed_html(translate, post_json_object) + title_str += \ + _announce_unattributed_html(translate, post_json_object, nickname) return (title_str, reply_avatar_image_in_post, container_class_icons, container_class) @@ -1229,7 +1237,8 @@ def _get_post_title_announce_html(base_dir: str, _log_post_timing(enable_timing_log, post_start_time, '13.3.1') title_str += \ _announce_with_display_name_html(translate, post_json_object, - announce_display_name) + announce_display_name, + nickname) if mitm: title_str += _mitm_warning_html(translate) @@ -1282,18 +1291,22 @@ def _reply_to_yourself_html(translate: {}) -> str: def _reply_to_unknown_html(translate: {}, - post_json_object: {}) -> str: + post_json_object: {}, + nickname: str) -> str: """Returns the html title for a reply to an unknown handle """ replying_to_str = 'replying to' if translate.get(replying_to_str): replying_to_str = translate[replying_to_str] + post_id = post_json_object['object']['inReplyTo'] + post_link = '/users/' + nickname + '?convthread=' + \ + post_id.replace('/', '--') return ' ' + \
         replying_to_str + '\n' + \ ' @unknown\n' @@ -1309,38 +1322,44 @@ def _mitm_warning_html(translate: {}) -> str: def _reply_with_unknown_path_html(translate: {}, post_json_object: {}, - post_domain: str) -> str: + post_domain: str, + nickname: str) -> str: """Returns html title for a reply with an unknown path eg. does not contain /statuses/ """ replying_to_str = 'replying to' if translate.get(replying_to_str): replying_to_str = translate[replying_to_str] + post_id = post_json_object['object']['inReplyTo'] + post_link = '/users/' + nickname + '?convthread=' + \ + post_id.replace('/', '--') return ' ' + replying_to_str + \
         '\n' + \ - ' ' + \ post_domain + '\n' def _get_reply_html(translate: {}, - in_reply_to: str, reply_display_name: str) -> str: + in_reply_to: str, reply_display_name: str, + nickname: str) -> str: """Returns html title for a reply """ replying_to_str = 'replying to' if translate.get(replying_to_str): replying_to_str = translate[replying_to_str] + post_link = '/users/' + nickname + '?convthread=' + \ + in_reply_to.replace('/', '--') return ' ' + \ '' + \
         replying_to_str + '\n' + \ - ' ' + \ '' + \ reply_display_name + '\n' @@ -1397,7 +1416,8 @@ def _get_post_title_reply_html(base_dir: str, if post_domain: title_str += \ _reply_with_unknown_path_html(translate, - post_json_object, post_domain) + post_json_object, post_domain, + nickname) return (title_str, reply_avatar_image_in_post, container_class_icons, container_class) @@ -1405,13 +1425,15 @@ def _get_post_title_reply_html(base_dir: str, reply_actor = in_reply_to.split('/statuses/')[0] reply_nickname = get_nickname_from_actor(reply_actor) if not reply_nickname: - title_str += _reply_to_unknown_html(translate, post_json_object) + title_str += \ + _reply_to_unknown_html(translate, post_json_object, nickname) return (title_str, reply_avatar_image_in_post, container_class_icons, container_class) reply_domain, _ = get_domain_from_actor(reply_actor) if not (reply_nickname and reply_domain): - title_str += _reply_to_unknown_html(translate, post_json_object) + title_str += \ + _reply_to_unknown_html(translate, post_json_object, nickname) return (title_str, reply_avatar_image_in_post, container_class_icons, container_class) @@ -1435,7 +1457,8 @@ def _get_post_title_reply_html(base_dir: str, reply_display_name, False, translate) _log_post_timing(enable_timing_log, post_start_time, '13.6') - title_str += _get_reply_html(translate, in_reply_to, reply_display_name) + title_str += \ + _get_reply_html(translate, in_reply_to, reply_display_name, nickname) if mitm: title_str += _mitm_warning_html(translate) @@ -1556,10 +1579,8 @@ def _get_footer_with_icons(show_icons: bool, reply_str + announce_str + like_str + bookmark_str + reaction_str footer_str += delete_str + mute_str + edit_str if not is_news_post(post_json_object): - date_link = published_link - if post_json_object['object'].get('inReplyTo'): - date_link = '/users/' + nickname + '?convthread=' + \ - published_link.replace('/', '--') + date_link = '/users/' + nickname + '?convthread=' + \ + published_link.replace('/', '--') footer_str += ' \n' @@ -2883,6 +2904,9 @@ def html_conversation_thread(post_id: str, nickname, domain, post_id, debug) + if not conv_posts: + return None + css_filename = base_dir + '/epicyon-profile.css' if os.path.isfile(base_dir + '/epicyon.css'): css_filename = base_dir + '/epicyon.css' @@ -2892,10 +2916,6 @@ def html_conversation_thread(post_id: str, conv_str = \ html_header_with_external_style(css_filename, instance_title, None) - if not conv_posts: - conv_str += html_footer() - return conv_str - separator_str = html_post_separator(base_dir, None) minimize_all_images = False