mirror of https://gitlab.com/bashrc2/epicyon
Merge branch 'main' of gitlab.com:bashrc2/epicyon
commit
4f8a7c16dc
|
@ -11864,8 +11864,8 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self._login_headers('text/html',
|
self._login_headers('text/html',
|
||||||
msglen, calling_domain)
|
msglen, calling_domain)
|
||||||
self._write(msg)
|
self._write(msg)
|
||||||
self._404()
|
|
||||||
self.server.getreq_busy = False
|
self.server.getreq_busy = False
|
||||||
|
self._redirect_headers(post_id, None, calling_domain)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _show_individual_at_post(self, ssml_getreq: bool, authorized: bool,
|
def _show_individual_at_post(self, ssml_getreq: bool, authorized: bool,
|
||||||
|
|
|
@ -1117,7 +1117,8 @@ def _boost_own_post_html(translate: {}) -> str:
|
||||||
|
|
||||||
|
|
||||||
def _announce_unattributed_html(translate: {},
|
def _announce_unattributed_html(translate: {},
|
||||||
post_json_object: {}) -> str:
|
post_json_object: {},
|
||||||
|
nickname: str) -> str:
|
||||||
"""Returns the html for an announce title where there
|
"""Returns the html for an announce title where there
|
||||||
is no attribution on the announced post
|
is no attribution on the announced post
|
||||||
"""
|
"""
|
||||||
|
@ -1125,30 +1126,35 @@ def _announce_unattributed_html(translate: {},
|
||||||
if translate.get(announces_str):
|
if translate.get(announces_str):
|
||||||
announces_str = translate[announces_str]
|
announces_str = translate[announces_str]
|
||||||
post_id = remove_id_ending(post_json_object['object']['id'])
|
post_id = remove_id_ending(post_json_object['object']['id'])
|
||||||
|
post_link = '/users/' + nickname + '?convthread=' + \
|
||||||
|
post_id.replace('/', '--')
|
||||||
return ' <img loading="lazy" decoding="async" title="' + \
|
return ' <img loading="lazy" decoding="async" title="' + \
|
||||||
announces_str + '" alt="' + \
|
announces_str + '" alt="' + \
|
||||||
announces_str + '" src="/icons' + \
|
announces_str + '" src="/icons' + \
|
||||||
'/repeat_inactive.png" ' + \
|
'/repeat_inactive.png" ' + \
|
||||||
'class="announceOrReply"/>\n' + \
|
'class="announceOrReply"/>\n' + \
|
||||||
' <a href="' + post_id + \
|
' <a href="' + post_link + \
|
||||||
'" class="announceOrReply" tabindex="10">@unattributed</a>\n'
|
'" class="announceOrReply" tabindex="10">@unattributed</a>\n'
|
||||||
|
|
||||||
|
|
||||||
def _announce_with_display_name_html(translate: {},
|
def _announce_with_display_name_html(translate: {},
|
||||||
post_json_object: {},
|
post_json_object: {},
|
||||||
announce_display_name: str) -> str:
|
announce_display_name: str,
|
||||||
|
nickname: str) -> str:
|
||||||
"""Returns html for an announce having a display name
|
"""Returns html for an announce having a display name
|
||||||
"""
|
"""
|
||||||
announces_str = 'announces'
|
announces_str = 'announces'
|
||||||
if translate.get(announces_str):
|
if translate.get(announces_str):
|
||||||
announces_str = translate[announces_str]
|
announces_str = translate[announces_str]
|
||||||
post_id = remove_id_ending(post_json_object['object']['id'])
|
post_id = remove_id_ending(post_json_object['object']['id'])
|
||||||
|
post_link = '/users/' + nickname + '?convthread=' + \
|
||||||
|
post_id.replace('/', '--')
|
||||||
return ' <img loading="lazy" decoding="async" title="' + \
|
return ' <img loading="lazy" decoding="async" title="' + \
|
||||||
announces_str + '" alt="' + \
|
announces_str + '" alt="' + \
|
||||||
announces_str + '" src="/' + \
|
announces_str + '" src="/' + \
|
||||||
'icons/repeat_inactive.png" ' + \
|
'icons/repeat_inactive.png" ' + \
|
||||||
'class="announceOrReply"/>\n' + \
|
'class="announceOrReply"/>\n' + \
|
||||||
' <a href="' + post_id + '" ' + \
|
' <a href="' + post_link + '" ' + \
|
||||||
'class="announceOrReply" tabindex="10">' + \
|
'class="announceOrReply" tabindex="10">' + \
|
||||||
'<span itemprop="author">' + \
|
'<span itemprop="author">' + \
|
||||||
announce_display_name + '</span></a>\n'
|
announce_display_name + '</span></a>\n'
|
||||||
|
@ -1182,7 +1188,8 @@ def _get_post_title_announce_html(base_dir: str,
|
||||||
|
|
||||||
# has no attribution
|
# has no attribution
|
||||||
if not obj_json.get('attributedTo'):
|
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,
|
return (title_str, reply_avatar_image_in_post,
|
||||||
container_class_icons, container_class)
|
container_class_icons, container_class)
|
||||||
|
|
||||||
|
@ -1202,7 +1209,8 @@ def _get_post_title_announce_html(base_dir: str,
|
||||||
if attributed_to:
|
if attributed_to:
|
||||||
announce_nickname = get_nickname_from_actor(attributed_to)
|
announce_nickname = get_nickname_from_actor(attributed_to)
|
||||||
if not announce_nickname:
|
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,
|
return (title_str, reply_avatar_image_in_post,
|
||||||
container_class_icons, container_class)
|
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')
|
_log_post_timing(enable_timing_log, post_start_time, '13.3.1')
|
||||||
title_str += \
|
title_str += \
|
||||||
_announce_with_display_name_html(translate, post_json_object,
|
_announce_with_display_name_html(translate, post_json_object,
|
||||||
announce_display_name)
|
announce_display_name,
|
||||||
|
nickname)
|
||||||
|
|
||||||
if mitm:
|
if mitm:
|
||||||
title_str += _mitm_warning_html(translate)
|
title_str += _mitm_warning_html(translate)
|
||||||
|
@ -1282,18 +1291,22 @@ def _reply_to_yourself_html(translate: {}) -> str:
|
||||||
|
|
||||||
|
|
||||||
def _reply_to_unknown_html(translate: {},
|
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
|
"""Returns the html title for a reply to an unknown handle
|
||||||
"""
|
"""
|
||||||
replying_to_str = 'replying to'
|
replying_to_str = 'replying to'
|
||||||
if translate.get(replying_to_str):
|
if translate.get(replying_to_str):
|
||||||
replying_to_str = translate[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 ' <img loading="lazy" decoding="async" title="' + \
|
return ' <img loading="lazy" decoding="async" title="' + \
|
||||||
replying_to_str + '" alt="' + \
|
replying_to_str + '" alt="' + \
|
||||||
replying_to_str + '" src="/icons' + \
|
replying_to_str + '" src="/icons' + \
|
||||||
'/reply.png" class="announceOrReply"/>\n' + \
|
'/reply.png" class="announceOrReply"/>\n' + \
|
||||||
' <a href="' + \
|
' <a href="' + \
|
||||||
post_json_object['object']['inReplyTo'] + \
|
post_link + \
|
||||||
'" class="announceOrReply" tabindex="10">@unknown</a>\n'
|
'" class="announceOrReply" tabindex="10">@unknown</a>\n'
|
||||||
|
|
||||||
|
|
||||||
|
@ -1309,38 +1322,44 @@ def _mitm_warning_html(translate: {}) -> str:
|
||||||
|
|
||||||
def _reply_with_unknown_path_html(translate: {},
|
def _reply_with_unknown_path_html(translate: {},
|
||||||
post_json_object: {},
|
post_json_object: {},
|
||||||
post_domain: str) -> str:
|
post_domain: str,
|
||||||
|
nickname: str) -> str:
|
||||||
"""Returns html title for a reply with an unknown path
|
"""Returns html title for a reply with an unknown path
|
||||||
eg. does not contain /statuses/
|
eg. does not contain /statuses/
|
||||||
"""
|
"""
|
||||||
replying_to_str = 'replying to'
|
replying_to_str = 'replying to'
|
||||||
if translate.get(replying_to_str):
|
if translate.get(replying_to_str):
|
||||||
replying_to_str = translate[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 ' <img loading="lazy" decoding="async" title="' + \
|
return ' <img loading="lazy" decoding="async" title="' + \
|
||||||
replying_to_str + \
|
replying_to_str + \
|
||||||
'" alt="' + replying_to_str + \
|
'" alt="' + replying_to_str + \
|
||||||
'" src="/icons/reply.png" ' + \
|
'" src="/icons/reply.png" ' + \
|
||||||
'class="announceOrReply"/>\n' + \
|
'class="announceOrReply"/>\n' + \
|
||||||
' <a href="' + \
|
' <a href="' + post_link + \
|
||||||
post_json_object['object']['inReplyTo'] + \
|
|
||||||
'" class="announceOrReply" tabindex="10">' + \
|
'" class="announceOrReply" tabindex="10">' + \
|
||||||
post_domain + '</a>\n'
|
post_domain + '</a>\n'
|
||||||
|
|
||||||
|
|
||||||
def _get_reply_html(translate: {},
|
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
|
"""Returns html title for a reply
|
||||||
"""
|
"""
|
||||||
replying_to_str = 'replying to'
|
replying_to_str = 'replying to'
|
||||||
if translate.get(replying_to_str):
|
if translate.get(replying_to_str):
|
||||||
replying_to_str = translate[replying_to_str]
|
replying_to_str = translate[replying_to_str]
|
||||||
|
post_link = '/users/' + nickname + '?convthread=' + \
|
||||||
|
in_reply_to.replace('/', '--')
|
||||||
return ' ' + \
|
return ' ' + \
|
||||||
'<img loading="lazy" decoding="async" title="' + \
|
'<img loading="lazy" decoding="async" title="' + \
|
||||||
replying_to_str + '" alt="' + \
|
replying_to_str + '" alt="' + \
|
||||||
replying_to_str + '" src="/' + \
|
replying_to_str + '" src="/' + \
|
||||||
'icons/reply.png" ' + \
|
'icons/reply.png" ' + \
|
||||||
'class="announceOrReply"/>\n' + \
|
'class="announceOrReply"/>\n' + \
|
||||||
' <a href="' + in_reply_to + \
|
' <a href="' + post_link + \
|
||||||
'" class="announceOrReply" tabindex="10">' + \
|
'" class="announceOrReply" tabindex="10">' + \
|
||||||
'<span itemprop="audience">' + \
|
'<span itemprop="audience">' + \
|
||||||
reply_display_name + '</span></a>\n'
|
reply_display_name + '</span></a>\n'
|
||||||
|
@ -1397,7 +1416,8 @@ def _get_post_title_reply_html(base_dir: str,
|
||||||
if post_domain:
|
if post_domain:
|
||||||
title_str += \
|
title_str += \
|
||||||
_reply_with_unknown_path_html(translate,
|
_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,
|
return (title_str, reply_avatar_image_in_post,
|
||||||
container_class_icons, container_class)
|
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_actor = in_reply_to.split('/statuses/')[0]
|
||||||
reply_nickname = get_nickname_from_actor(reply_actor)
|
reply_nickname = get_nickname_from_actor(reply_actor)
|
||||||
if not reply_nickname:
|
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,
|
return (title_str, reply_avatar_image_in_post,
|
||||||
container_class_icons, container_class)
|
container_class_icons, container_class)
|
||||||
|
|
||||||
reply_domain, _ = get_domain_from_actor(reply_actor)
|
reply_domain, _ = get_domain_from_actor(reply_actor)
|
||||||
if not (reply_nickname and reply_domain):
|
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,
|
return (title_str, reply_avatar_image_in_post,
|
||||||
container_class_icons, container_class)
|
container_class_icons, container_class)
|
||||||
|
|
||||||
|
@ -1435,7 +1457,8 @@ def _get_post_title_reply_html(base_dir: str,
|
||||||
reply_display_name, False, translate)
|
reply_display_name, False, translate)
|
||||||
_log_post_timing(enable_timing_log, post_start_time, '13.6')
|
_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:
|
if mitm:
|
||||||
title_str += _mitm_warning_html(translate)
|
title_str += _mitm_warning_html(translate)
|
||||||
|
@ -1556,8 +1579,6 @@ def _get_footer_with_icons(show_icons: bool,
|
||||||
reply_str + announce_str + like_str + bookmark_str + reaction_str
|
reply_str + announce_str + like_str + bookmark_str + reaction_str
|
||||||
footer_str += delete_str + mute_str + edit_str
|
footer_str += delete_str + mute_str + edit_str
|
||||||
if not is_news_post(post_json_object):
|
if not is_news_post(post_json_object):
|
||||||
date_link = published_link
|
|
||||||
if post_json_object['object'].get('inReplyTo'):
|
|
||||||
date_link = '/users/' + nickname + '?convthread=' + \
|
date_link = '/users/' + nickname + '?convthread=' + \
|
||||||
published_link.replace('/', '--')
|
published_link.replace('/', '--')
|
||||||
footer_str += ' <a href="' + date_link + '" class="' + \
|
footer_str += ' <a href="' + date_link + '" class="' + \
|
||||||
|
@ -2883,6 +2904,9 @@ def html_conversation_thread(post_id: str,
|
||||||
nickname, domain,
|
nickname, domain,
|
||||||
post_id, debug)
|
post_id, debug)
|
||||||
|
|
||||||
|
if not conv_posts:
|
||||||
|
return None
|
||||||
|
|
||||||
css_filename = base_dir + '/epicyon-profile.css'
|
css_filename = base_dir + '/epicyon-profile.css'
|
||||||
if os.path.isfile(base_dir + '/epicyon.css'):
|
if os.path.isfile(base_dir + '/epicyon.css'):
|
||||||
css_filename = base_dir + '/epicyon.css'
|
css_filename = base_dir + '/epicyon.css'
|
||||||
|
@ -2892,10 +2916,6 @@ def html_conversation_thread(post_id: str,
|
||||||
conv_str = \
|
conv_str = \
|
||||||
html_header_with_external_style(css_filename, instance_title, None)
|
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)
|
separator_str = html_post_separator(base_dir, None)
|
||||||
|
|
||||||
minimize_all_images = False
|
minimize_all_images = False
|
||||||
|
|
Loading…
Reference in New Issue