Add cache for automatic content warnings

merge-requests/30/head
Bob Mottram 2024-01-18 13:27:22 +00:00
parent 04975770f5
commit 5ff61bab0e
19 changed files with 420 additions and 220 deletions

View File

@ -2269,12 +2269,17 @@ def _load_auto_cw(base_dir: str, nickname: str, domain: str) -> []:
def add_auto_cw(base_dir: str, nickname: str, domain: str, def add_auto_cw(base_dir: str, nickname: str, domain: str,
subject: str, content: str) -> str: subject: str, content: str,
auto_cw_cache: {}) -> str:
"""Appends any automatic CW to the subject line """Appends any automatic CW to the subject line
and returns the new subject line and returns the new subject line
""" """
new_subject = subject new_subject = subject
auto_cw_list = _load_auto_cw(base_dir, nickname, domain) if auto_cw_cache.get(nickname):
auto_cw_list = auto_cw_cache[nickname]
else:
auto_cw_list = _load_auto_cw(base_dir, nickname, domain)
auto_cw_cache[nickname] = auto_cw_list
for cw_rule in auto_cw_list: for cw_rule in auto_cw_list:
if '->' not in cw_rule: if '->' not in cw_rule:
continue continue

201
daemon.py
View File

@ -521,7 +521,8 @@ class PubServer(BaseHTTPRequestHandler):
cw_lists: {}, dogwhistles: {}, cw_lists: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
max_hashtags: int, max_hashtags: int,
buy_sites: {}) -> None: buy_sites: {},
auto_cw_cache: {}) -> None:
"""When an edited post is created this assigns """When an edited post is created this assigns
a published and updated date to it, and uses a published and updated date to it, and uses
the previous id the previous id
@ -569,7 +570,8 @@ class PubServer(BaseHTTPRequestHandler):
theme_name, max_like_count, theme_name, max_like_count,
cw_lists, dogwhistles, cw_lists, dogwhistles,
min_images_for_accounts, min_images_for_accounts,
max_hashtags, buy_sites) max_hashtags, buy_sites,
auto_cw_cache)
# update the index # update the index
id_str = edited_postid.split('/')[-1] id_str = edited_postid.split('/')[-1]
@ -757,7 +759,8 @@ class PubServer(BaseHTTPRequestHandler):
content_license_url, '', content_license_url, '',
languages_understood, False, languages_understood, False,
translate, buy_url, translate, buy_url,
chat_url) chat_url,
self.server.auto_cw_cache)
if message_json: if message_json:
# NOTE: content and contentMap are not required, but we will keep # NOTE: content and contentMap are not required, but we will keep
# them in there so that the post does not get filtered out by # them in there so that the post does not get filtered out by
@ -2078,7 +2081,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.sites_unavailable, self.server.sites_unavailable,
self.server.max_recent_books, self.server.max_recent_books,
self.server.books_cache, self.server.books_cache,
self.server.max_cached_readers) self.server.max_cached_readers,
self.server.auto_cw_cache)
def _get_outbox_thread_index(self, nickname: str, def _get_outbox_thread_index(self, nickname: str,
max_outbox_threads_per_account: int) -> int: max_outbox_threads_per_account: int) -> int:
@ -3520,7 +3524,8 @@ class PubServer(BaseHTTPRequestHandler):
min_images_for_accounts, min_images_for_accounts,
self.server.buy_sites, self.server.buy_sites,
max_shares_on_profile, max_shares_on_profile,
self.server.no_of_books) self.server.no_of_books,
self.server.auto_cw_cache)
if profile_str: if profile_str:
msg = profile_str.encode('utf-8') msg = profile_str.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -3994,7 +3999,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
None, None, default_post_language, None, None, default_post_language,
self.server.buy_sites, self.server.buy_sites,
default_buy_site) default_buy_site,
self.server.auto_cw_cache)
if msg: if msg:
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -4157,7 +4163,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
None, None, default_post_language, None, None, default_post_language,
self.server.buy_sites, self.server.buy_sites,
default_buy_site) default_buy_site,
self.server.auto_cw_cache)
if msg: if msg:
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -4848,7 +4855,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.access_keys, self.server.access_keys,
'search', 'search',
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
if hashtag_str: if hashtag_str:
msg = hashtag_str.encode('utf-8') msg = hashtag_str.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -4960,7 +4968,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, self.server.dogwhistles,
self.server.access_keys, self.server.access_keys,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
if history_str: if history_str:
msg = history_str.encode('utf-8') msg = history_str.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -5044,7 +5053,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, self.server.dogwhistles,
self.server.access_keys, self.server.access_keys,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
if bookmarks_str: if bookmarks_str:
msg = bookmarks_str.encode('utf-8') msg = bookmarks_str.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -5234,7 +5244,8 @@ class PubServer(BaseHTTPRequestHandler):
min_images_for_accounts, min_images_for_accounts,
self.server.buy_sites, self.server.buy_sites,
max_shares_on_profile, max_shares_on_profile,
self.server.no_of_books) self.server.no_of_books,
self.server.auto_cw_cache)
if profile_str: if profile_str:
msg = profile_str.encode('utf-8') msg = profile_str.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -8439,6 +8450,8 @@ class PubServer(BaseHTTPRequestHandler):
except OSError: except OSError:
print('EX: unable to write auto CW ' + print('EX: unable to write auto CW ' +
auto_cw_filename) auto_cw_filename)
self.server.auto_cw_cache[nickname] = \
fields['autoCW'].split('\n')
else: else:
if os.path.isfile(auto_cw_filename): if os.path.isfile(auto_cw_filename):
try: try:
@ -8447,6 +8460,7 @@ class PubServer(BaseHTTPRequestHandler):
print('EX: _profile_edit ' + print('EX: _profile_edit ' +
'unable to delete ' + 'unable to delete ' +
auto_cw_filename) auto_cw_filename)
self.server.auto_cw_cache[nickname] = []
# save blocked accounts list # save blocked accounts list
if fields.get('blocked'): if fields.get('blocked'):
@ -9942,7 +9956,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.access_keys, self.server.access_keys,
'search', 'search',
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
if hashtag_str: if hashtag_str:
msg = hashtag_str.encode('utf-8') msg = hashtag_str.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -10265,7 +10280,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
minimize_all_images, None, minimize_all_images, None,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
actor_absolute = \ actor_absolute = \
self._get_instance_url(calling_domain) + \ self._get_instance_url(calling_domain) + \
@ -10844,7 +10860,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
minimize_all_images, None, minimize_all_images, None,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
else: else:
print('WARN: Liked post not found: ' + liked_post_filename) print('WARN: Liked post not found: ' + liked_post_filename)
# clear the icon from the cache so that it gets updated # clear the icon from the cache so that it gets updated
@ -11051,7 +11068,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
minimize_all_images, None, minimize_all_images, None,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
else: else:
print('WARN: Unliked post not found: ' + liked_post_filename) print('WARN: Unliked post not found: ' + liked_post_filename)
# clear the icon from the cache so that it gets updated # clear the icon from the cache so that it gets updated
@ -11287,7 +11305,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
minimize_all_images, None, minimize_all_images, None,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
else: else:
print('WARN: Emoji reaction post not found: ' + print('WARN: Emoji reaction post not found: ' +
reaction_post_filename) reaction_post_filename)
@ -11513,7 +11532,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
minimize_all_images, None, minimize_all_images, None,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
else: else:
print('WARN: Unreaction post not found: ' + print('WARN: Unreaction post not found: ' +
reaction_post_filename) reaction_post_filename)
@ -11625,7 +11645,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -11785,7 +11806,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
minimize_all_images, None, minimize_all_images, None,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
else: else:
print('WARN: Bookmarked post not found: ' + bookmark_filename) print('WARN: Bookmarked post not found: ' + bookmark_filename)
# self._post_to_outbox(bookmark_json, # self._post_to_outbox(bookmark_json,
@ -11956,7 +11978,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
minimize_all_images, None, minimize_all_images, None,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
else: else:
print('WARN: Unbookmarked post not found: ' + print('WARN: Unbookmarked post not found: ' +
bookmark_filename) bookmark_filename)
@ -12073,7 +12096,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.lists_enabled, self.server.lists_enabled,
self.server.dogwhistles, self.server.dogwhistles,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
if delete_str: if delete_str:
delete_str_len = len(delete_str) delete_str_len = len(delete_str)
self._set_headers('text/html', delete_str_len, self._set_headers('text/html', delete_str_len,
@ -12215,7 +12239,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
minimize_all_images, None, minimize_all_images, None,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
else: else:
print('WARN: Muted post not found: ' + mute_filename) print('WARN: Muted post not found: ' + mute_filename)
@ -12360,7 +12385,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
minimize_all_images, None, minimize_all_images, None,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
else: else:
print('WARN: Unmuted post not found: ' + mute_filename) print('WARN: Unmuted post not found: ' + mute_filename)
if calling_domain.endswith('.onion') and onion_domain: if calling_domain.endswith('.onion') and onion_domain:
@ -12492,7 +12518,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -12607,7 +12634,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -12731,7 +12759,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.buy_sites, None, self.server.buy_sites, None,
self.server.max_shares_on_profile, self.server.max_shares_on_profile,
self.server.sites_unavailable, self.server.sites_unavailable,
self.server.no_of_books) self.server.no_of_books,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -12864,7 +12893,8 @@ class PubServer(BaseHTTPRequestHandler):
None, None,
max_shares_on_profile, max_shares_on_profile,
self.server.sites_unavailable, self.server.sites_unavailable,
self.server.no_of_books) self.server.no_of_books,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -12968,7 +12998,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.debug, self.server.debug,
self.server.buy_sites, self.server.buy_sites,
self.server.blocked_cache) self.server.blocked_cache,
self.server.auto_cw_cache)
if conv_str: if conv_str:
msg = conv_str.encode('utf-8') msg = conv_str.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -13137,7 +13168,8 @@ class PubServer(BaseHTTPRequestHandler):
bold_reading, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
if not msg: if not msg:
self._404() self._404()
return True return True
@ -13204,6 +13236,7 @@ class PubServer(BaseHTTPRequestHandler):
bold_reading, self.server.dogwhistles, bold_reading, self.server.dogwhistles,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites, self.server.buy_sites,
self.server.auto_cw_cache,
'shares') 'shares')
if not msg: if not msg:
self._404() self._404()
@ -13294,7 +13327,8 @@ class PubServer(BaseHTTPRequestHandler):
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
self.server.dogwhistles, self.server.dogwhistles,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -13621,7 +13655,8 @@ class PubServer(BaseHTTPRequestHandler):
ua_str, ua_str,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
reverse_sequence, last_post_id, reverse_sequence, last_post_id,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
if getreq_start_time: if getreq_start_time:
fitness_performance(getreq_start_time, fitness_performance(getreq_start_time,
self.server.fitness, self.server.fitness,
@ -13805,7 +13840,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, ua_str, self.server.dogwhistles, ua_str,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
reverse_sequence, last_post_id, reverse_sequence, last_post_id,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -13980,7 +14016,8 @@ class PubServer(BaseHTTPRequestHandler):
ua_str, ua_str,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
reverse_sequence, last_post_id, reverse_sequence, last_post_id,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -14151,7 +14188,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, ua_str, self.server.dogwhistles, ua_str,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
reverse_sequence, last_post_id, reverse_sequence, last_post_id,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -14322,7 +14360,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, ua_str, self.server.dogwhistles, ua_str,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
reverse_sequence, last_post_id, reverse_sequence, last_post_id,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -14496,7 +14535,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, ua_str, self.server.dogwhistles, ua_str,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
reverse_sequence, reverse_sequence,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -14674,7 +14714,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, ua_str, self.server.dogwhistles, ua_str,
min_images_for_accounts, min_images_for_accounts,
reverse_sequence, reverse_sequence,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -14803,7 +14844,8 @@ class PubServer(BaseHTTPRequestHandler):
ua_str, ua_str,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
reverse_sequence, reverse_sequence,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -14905,7 +14947,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, ua_str, self.server.dogwhistles, ua_str,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
reverse_sequence, reverse_sequence,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -15048,7 +15091,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, ua_str, self.server.dogwhistles, ua_str,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
reverse_sequence, reverse_sequence,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -15209,7 +15253,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, ua_str, self.server.dogwhistles, ua_str,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
reverse_sequence, reverse_sequence,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -15367,7 +15412,8 @@ class PubServer(BaseHTTPRequestHandler):
ua_str, ua_str,
min_images_for_accounts, min_images_for_accounts,
reverse_sequence, reverse_sequence,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -15516,7 +15562,8 @@ class PubServer(BaseHTTPRequestHandler):
None, None,
self.server.max_shares_on_profile, self.server.max_shares_on_profile,
self.server.sites_unavailable, self.server.sites_unavailable,
self.server.no_of_books) self.server.no_of_books,
self.server.auto_cw_cache)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
@ -15670,7 +15717,8 @@ class PubServer(BaseHTTPRequestHandler):
None, None,
max_shares_on_profile, max_shares_on_profile,
sites_unavailable, sites_unavailable,
self.server.no_of_books).encode('utf-8') self.server.no_of_books,
self.server.auto_cw_cache).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', self._set_headers('text/html',
msglen, cookie, calling_domain, False) msglen, cookie, calling_domain, False)
@ -15823,7 +15871,8 @@ class PubServer(BaseHTTPRequestHandler):
None, None,
max_shares_on_profile, max_shares_on_profile,
sites_unavailable, sites_unavailable,
self.server.no_of_books).encode('utf-8') self.server.no_of_books,
self.server.auto_cw_cache).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', self._set_headers('text/html',
msglen, cookie, calling_domain, False) msglen, cookie, calling_domain, False)
@ -15974,7 +16023,8 @@ class PubServer(BaseHTTPRequestHandler):
None, None,
max_shares_on_profile, max_shares_on_profile,
sites_unavailable, sites_unavailable,
self.server.no_of_books).encode('utf-8') self.server.no_of_books,
self.server.auto_cw_cache).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', self._set_headers('text/html',
msglen, cookie, calling_domain, False) msglen, cookie, calling_domain, False)
@ -16127,7 +16177,8 @@ class PubServer(BaseHTTPRequestHandler):
None, None,
max_shares_on_profile, max_shares_on_profile,
sites_unavailable, sites_unavailable,
self.server.no_of_books).encode('utf-8') self.server.no_of_books,
self.server.auto_cw_cache).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
cookie, calling_domain, False) cookie, calling_domain, False)
@ -16310,7 +16361,8 @@ class PubServer(BaseHTTPRequestHandler):
None, None,
max_shares_on_profile, max_shares_on_profile,
sites_unavailable, sites_unavailable,
self.server.no_of_books).encode('utf-8') self.server.no_of_books,
self.server.auto_cw_cache).encode('utf-8')
msglen = len(msg) msglen = len(msg)
self._set_headers('text/html', msglen, self._set_headers('text/html', msglen,
cookie, calling_domain, False) cookie, calling_domain, False)
@ -17140,7 +17192,8 @@ class PubServer(BaseHTTPRequestHandler):
new_post_month, new_post_year, new_post_month, new_post_year,
default_post_language, default_post_language,
self.server.buy_sites, self.server.buy_sites,
default_buy_site) default_buy_site,
self.server.auto_cw_cache)
if not msg: if not msg:
print('Error replying to ' + in_reply_to_url) print('Error replying to ' + in_reply_to_url)
self._404() self._404()
@ -19875,7 +19928,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, self.server.dogwhistles,
self.server.min_images_for_accounts, self.server.min_images_for_accounts,
self.server.debug, self.server.debug,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
if msg: if msg:
msg = msg.encode('utf-8') msg = msg.encode('utf-8')
msglen = len(msg) msglen = len(msg)
@ -21995,7 +22049,8 @@ class PubServer(BaseHTTPRequestHandler):
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, languages_understood,
self.server.translate, buy_url, self.server.translate, buy_url,
chat_url) chat_url,
self.server.auto_cw_cache)
if message_json: if message_json:
if edited_postid: if edited_postid:
recent_posts_cache = self.server.recent_posts_cache recent_posts_cache = self.server.recent_posts_cache
@ -22043,7 +22098,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, self.server.dogwhistles,
min_images_for_accounts, min_images_for_accounts,
self.server.max_hashtags, self.server.max_hashtags,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
print('DEBUG: sending edited public post ' + print('DEBUG: sending edited public post ' +
str(message_json)) str(message_json))
if fields['schedulePost']: if fields['schedulePost']:
@ -22344,7 +22400,8 @@ class PubServer(BaseHTTPRequestHandler):
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, languages_understood,
self.server.translate, buy_url, self.server.translate, buy_url,
chat_url) chat_url,
self.server.auto_cw_cache)
if message_json: if message_json:
if edited_postid: if edited_postid:
recent_posts_cache = self.server.recent_posts_cache recent_posts_cache = self.server.recent_posts_cache
@ -22392,7 +22449,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, self.server.dogwhistles,
min_images_for_accounts, min_images_for_accounts,
self.server.max_hashtags, self.server.max_hashtags,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
print('DEBUG: sending edited unlisted post ' + print('DEBUG: sending edited unlisted post ' +
str(message_json)) str(message_json))
@ -22471,7 +22529,8 @@ class PubServer(BaseHTTPRequestHandler):
media_creator, media_creator,
languages_understood, languages_understood,
self.server.translate, self.server.translate,
buy_url, chat_url) buy_url, chat_url,
self.server.auto_cw_cache)
if message_json: if message_json:
if edited_postid: if edited_postid:
recent_posts_cache = self.server.recent_posts_cache recent_posts_cache = self.server.recent_posts_cache
@ -22519,7 +22578,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, self.server.dogwhistles,
min_images_for_accounts, min_images_for_accounts,
self.server.max_hashtags, self.server.max_hashtags,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
print('DEBUG: sending edited followers post ' + print('DEBUG: sending edited followers post ' +
str(message_json)) str(message_json))
@ -22611,7 +22671,8 @@ class PubServer(BaseHTTPRequestHandler):
languages_understood, languages_understood,
reply_is_chat, reply_is_chat,
self.server.translate, self.server.translate,
buy_url, chat_url) buy_url, chat_url,
self.server.auto_cw_cache)
if message_json: if message_json:
print('DEBUG: posting DM edited_postid ' + print('DEBUG: posting DM edited_postid ' +
str(edited_postid)) str(edited_postid))
@ -22661,7 +22722,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, self.server.dogwhistles,
min_images_for_accounts, min_images_for_accounts,
self.server.max_hashtags, self.server.max_hashtags,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
print('DEBUG: sending edited dm post ' + print('DEBUG: sending edited dm post ' +
str(message_json)) str(message_json))
@ -22743,7 +22805,8 @@ class PubServer(BaseHTTPRequestHandler):
media_creator, media_creator,
languages_understood, languages_understood,
False, self.server.translate, False, self.server.translate,
buy_url, chat_url) buy_url, chat_url,
self.server.auto_cw_cache)
if message_json: if message_json:
if fields['schedulePost']: if fields['schedulePost']:
return 1 return 1
@ -22796,7 +22859,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, self.server.dogwhistles,
min_images_for_accounts, min_images_for_accounts,
self.server.max_hashtags, self.server.max_hashtags,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
print('DEBUG: sending edited reminder post ' + print('DEBUG: sending edited reminder post ' +
str(message_json)) str(message_json))
if self._post_to_outbox(message_json, if self._post_to_outbox(message_json,
@ -22852,7 +22916,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.content_license_url, self.server.content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, languages_understood,
self.server.translate) self.server.translate,
self.server.auto_cw_cache)
if message_json: if message_json:
if self._post_to_outbox(message_json, if self._post_to_outbox(message_json,
self.server.project_version, self.server.project_version,
@ -22919,7 +22984,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.content_license_url, self.server.content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, languages_understood,
self.server.translate) self.server.translate,
self.server.auto_cw_cache)
if message_json: if message_json:
if self.server.debug: if self.server.debug:
print('DEBUG: new Question') print('DEBUG: new Question')
@ -22974,7 +23040,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.base_dir, self.server.base_dir,
nickname, self.server.domain) nickname, self.server.domain)
msg_str = fields['readingupdatetype'] msg_str = fields['readingupdatetype']
# TODO reading status # reading status
message_json = \ message_json = \
create_reading_post(self.server.base_dir, create_reading_post(self.server.base_dir,
nickname, nickname,
@ -23003,7 +23069,8 @@ class PubServer(BaseHTTPRequestHandler):
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, languages_understood,
self.server.translate, buy_url, self.server.translate, buy_url,
chat_url) chat_url,
self.server.auto_cw_cache)
if message_json: if message_json:
if edited_postid: if edited_postid:
recent_posts_cache = self.server.recent_posts_cache recent_posts_cache = self.server.recent_posts_cache
@ -23051,7 +23118,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.dogwhistles, self.server.dogwhistles,
min_images_for_accounts, min_images_for_accounts,
self.server.max_hashtags, self.server.max_hashtags,
self.server.buy_sites) self.server.buy_sites,
self.server.auto_cw_cache)
print('DEBUG: sending edited reading status post ' + print('DEBUG: sending edited reading status post ' +
str(message_json)) str(message_json))
if fields['schedulePost']: if fields['schedulePost']:
@ -24474,6 +24542,9 @@ def run_daemon(no_of_books: int,
httpd.max_recent_books = 1000 httpd.max_recent_books = 1000
httpd.max_cached_readers = 24 httpd.max_cached_readers = 24
# cache for automatic content warnings
httpd.auto_cw_cache = {}
# list of websites which are currently down # list of websites which are currently down
httpd.sites_unavailable = load_unavailable_sites(base_dir) httpd.sites_unavailable = load_unavailable_sites(base_dir)

View File

@ -554,6 +554,7 @@ def _desktop_reply_to_post(session, post_id: str,
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
video_transcript = None video_transcript = None
auto_cw_cache = {}
_say_command(say_str, say_str, screenreader, system_language, espeak) _say_command(say_str, say_str, screenreader, system_language, espeak)
if send_post_via_server(signing_priv_key_pem, __version__, if send_post_via_server(signing_priv_key_pem, __version__,
base_dir, session, nickname, password, base_dir, session, nickname, password,
@ -568,7 +569,7 @@ def _desktop_reply_to_post(session, post_id: str,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
event_date, event_time, event_end_time, location, event_date, event_time, event_end_time, location,
translate, buy_url, chat_url, translate, buy_url, chat_url, auto_cw_cache,
debug, post_id, post_id, debug, post_id, post_id,
conversation_id, subject) == 0: conversation_id, subject) == 0:
say_str = 'Reply sent' say_str = 'Reply sent'
@ -635,6 +636,7 @@ def _desktop_new_post(session,
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
video_transcript = None video_transcript = None
auto_cw_cache = {}
_say_command(say_str, say_str, screenreader, system_language, espeak) _say_command(say_str, say_str, screenreader, system_language, espeak)
if send_post_via_server(signing_priv_key_pem, __version__, if send_post_via_server(signing_priv_key_pem, __version__,
base_dir, session, nickname, password, base_dir, session, nickname, password,
@ -648,7 +650,8 @@ def _desktop_new_post(session,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
event_date, event_time, event_end_time, location, event_date, event_time, event_end_time, location,
translate, buy_url, chat_url, debug, None, None, translate, buy_url, chat_url, auto_cw_cache,
debug, None, None,
conversation_id, subject) == 0: conversation_id, subject) == 0:
say_str = 'Post sent' say_str = 'Post sent'
else: else:
@ -1404,6 +1407,7 @@ def _desktop_new_dm_base(session, to_handle: str,
video_transcript = None video_transcript = None
say_str = 'Sending' say_str = 'Sending'
auto_cw_cache = {}
_say_command(say_str, say_str, screenreader, system_language, espeak) _say_command(say_str, say_str, screenreader, system_language, espeak)
if send_post_via_server(signing_priv_key_pem, __version__, if send_post_via_server(signing_priv_key_pem, __version__,
base_dir, session, nickname, password, base_dir, session, nickname, password,
@ -1417,7 +1421,8 @@ def _desktop_new_dm_base(session, to_handle: str,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
event_date, event_time, event_end_time, location, event_date, event_time, event_end_time, location,
translate, buy_url, chat_url, debug, None, None, translate, buy_url, chat_url, auto_cw_cache,
debug, None, None,
conversation_id, subject) == 0: conversation_id, subject) == 0:
say_str = 'Direct message sent' say_str = 'Direct message sent'
else: else:

View File

@ -1788,6 +1788,7 @@ def _command_options() -> None:
languages_understood = [argb.languages_understood] languages_understood = [argb.languages_understood]
translate = {} translate = {}
video_transcript = None video_transcript = None
auto_cw_cache = {}
print('Sending post to ' + argb.sendto) print('Sending post to ' + argb.sendto)
send_post_via_server(signing_priv_key_pem, __version__, send_post_via_server(signing_priv_key_pem, __version__,
@ -1805,7 +1806,7 @@ def _command_options() -> None:
argb.media_license_url, argb.media_creator, argb.media_license_url, argb.media_creator,
argb.eventDate, argb.eventTime, argb.eventEndTime, argb.eventDate, argb.eventTime, argb.eventEndTime,
argb.eventLocation, translate, argb.buyUrl, argb.eventLocation, translate, argb.buyUrl,
argb.chatUrl, argb.debug, argb.chatUrl, auto_cw_cache, argb.debug,
reply_to, reply_to, argb.conversationId, subject) reply_to, reply_to, argb.conversationId, subject)
for _ in range(10): for _ in range(10):
# TODO detect send success/fail # TODO detect send success/fail
@ -3576,6 +3577,7 @@ def _command_options() -> None:
translate = {} translate = {}
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
auto_cw_cache = {}
test_video_transcript = '' test_video_transcript = ''
create_public_post(base_dir, nickname, domain, port, http_prefix, create_public_post(base_dir, nickname, domain, port, http_prefix,
@ -3593,7 +3595,8 @@ def _command_options() -> None:
test_is_article, argb.language, conversation_id, test_is_article, argb.language, conversation_id,
low_bandwidth, argb.content_license_url, low_bandwidth, argb.content_license_url,
argb.media_license_url, argb.media_creator, argb.media_license_url, argb.media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(base_dir, nickname, domain, port, http_prefix, create_public_post(base_dir, nickname, domain, port, http_prefix,
"Zoiks!!!", "Zoiks!!!",
test_save_to_file, test_save_to_file,
@ -3609,7 +3612,8 @@ def _command_options() -> None:
test_is_article, argb.language, conversation_id, test_is_article, argb.language, conversation_id,
low_bandwidth, argb.content_license_url, low_bandwidth, argb.content_license_url,
argb.media_license_url, argb.media_creator, argb.media_license_url, argb.media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(base_dir, nickname, domain, port, http_prefix, create_public_post(base_dir, nickname, domain, port, http_prefix,
"Hey scoob we need like a hundred more #milkshakes", "Hey scoob we need like a hundred more #milkshakes",
test_save_to_file, test_save_to_file,
@ -3625,7 +3629,8 @@ def _command_options() -> None:
test_is_article, argb.language, conversation_id, test_is_article, argb.language, conversation_id,
low_bandwidth, argb.content_license_url, low_bandwidth, argb.content_license_url,
argb.media_license_url, argb.media_creator, argb.media_license_url, argb.media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(base_dir, nickname, domain, port, http_prefix, create_public_post(base_dir, nickname, domain, port, http_prefix,
"Getting kinda spooky around here", "Getting kinda spooky around here",
test_save_to_file, test_save_to_file,
@ -3641,7 +3646,8 @@ def _command_options() -> None:
test_is_article, argb.language, conversation_id, test_is_article, argb.language, conversation_id,
low_bandwidth, argb.content_license_url, low_bandwidth, argb.content_license_url,
argb.media_license_url, argb.media_creator, argb.media_license_url, argb.media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(base_dir, nickname, domain, port, http_prefix, create_public_post(base_dir, nickname, domain, port, http_prefix,
"And they would have gotten away with it too" + "And they would have gotten away with it too" +
"if it wasn't for those pesky hackers", "if it wasn't for those pesky hackers",
@ -3658,7 +3664,8 @@ def _command_options() -> None:
test_is_article, argb.language, conversation_id, test_is_article, argb.language, conversation_id,
low_bandwidth, argb.content_license_url, low_bandwidth, argb.content_license_url,
argb.media_license_url, argb.media_creator, argb.media_license_url, argb.media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(base_dir, nickname, domain, port, http_prefix, create_public_post(base_dir, nickname, domain, port, http_prefix,
"man these centralized sites are like the worst!", "man these centralized sites are like the worst!",
test_save_to_file, test_save_to_file,
@ -3674,7 +3681,8 @@ def _command_options() -> None:
test_is_article, argb.language, conversation_id, test_is_article, argb.language, conversation_id,
low_bandwidth, argb.content_license_url, low_bandwidth, argb.content_license_url,
argb.media_license_url, argb.media_creator, argb.media_license_url, argb.media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(base_dir, nickname, domain, port, http_prefix, create_public_post(base_dir, nickname, domain, port, http_prefix,
"another mystery solved #test", "another mystery solved #test",
test_save_to_file, test_save_to_file,
@ -3690,7 +3698,8 @@ def _command_options() -> None:
test_is_article, argb.language, conversation_id, test_is_article, argb.language, conversation_id,
low_bandwidth, argb.content_license_url, low_bandwidth, argb.content_license_url,
argb.media_license_url, argb.media_creator, argb.media_license_url, argb.media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(base_dir, nickname, domain, port, http_prefix, create_public_post(base_dir, nickname, domain, port, http_prefix,
"let's go bowling", "let's go bowling",
test_save_to_file, test_save_to_file,
@ -3706,7 +3715,8 @@ def _command_options() -> None:
test_is_article, argb.language, conversation_id, test_is_article, argb.language, conversation_id,
low_bandwidth, argb.content_license_url, low_bandwidth, argb.content_license_url,
argb.media_license_url, argb.media_creator, argb.media_license_url, argb.media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
domain_full = domain + ':' + str(port) domain_full = domain + ':' + str(port)
clear_follows(base_dir, nickname, domain) clear_follows(base_dir, nickname, domain)
follow_person(base_dir, nickname, domain, 'maxboardroom', domain_full, follow_person(base_dir, nickname, domain, 'maxboardroom', domain_full,

View File

@ -474,7 +474,8 @@ def _inbox_store_post_to_html_cache(recent_posts_cache: {},
bold_reading: bool, bold_reading: bool,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> None: buy_sites: {},
auto_cw_cache: {}) -> None:
"""Converts the json post into html and stores it in a cache """Converts the json post into html and stores it in a cache
This enables the post to be quickly displayed later This enables the post to be quickly displayed later
""" """
@ -504,7 +505,7 @@ def _inbox_store_post_to_html_cache(recent_posts_cache: {},
not_dm, True, True, False, True, False, not_dm, True, True, False, True, False,
cw_lists, lists_enabled, timezone, mitm, cw_lists, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, minimize_all_images, bold_reading, dogwhistles, minimize_all_images,
None, buy_sites) None, buy_sites, auto_cw_cache)
def valid_inbox(base_dir: str, nickname: str, domain: str) -> bool: def valid_inbox(base_dir: str, nickname: str, domain: str) -> bool:
@ -1577,7 +1578,8 @@ def receive_edit_to_post(recent_posts_cache: {}, message_json: {},
cw_lists: {}, dogwhistles: {}, cw_lists: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
max_hashtags: int, max_hashtags: int,
buy_sites: {}) -> bool: buy_sites: {},
auto_cw_cache: {}) -> bool:
"""A post was edited """A post was edited
""" """
if not has_object_dict(message_json): if not has_object_dict(message_json):
@ -1715,7 +1717,7 @@ def receive_edit_to_post(recent_posts_cache: {}, message_json: {},
lists_enabled, timezone, mitm, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
return True return True
@ -1844,7 +1846,8 @@ def _receive_update_activity(recent_posts_cache: {}, session, base_dir: str,
cw_lists: {}, dogwhistles: {}, cw_lists: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
max_hashtags: int, max_hashtags: int,
buy_sites: {}) -> bool: buy_sites: {},
auto_cw_cache: {}) -> bool:
"""Receives an Update activity within the POST section of HTTPServer """Receives an Update activity within the POST section of HTTPServer
""" """
@ -1889,7 +1892,8 @@ def _receive_update_activity(recent_posts_cache: {}, session, base_dir: str,
theme_name, max_like_count, theme_name, max_like_count,
cw_lists, dogwhistles, cw_lists, dogwhistles,
min_images_for_accounts, min_images_for_accounts,
max_hashtags, buy_sites): max_hashtags, buy_sites,
auto_cw_cache):
print('EDITPOST: received ' + message_json['object']['id']) print('EDITPOST: received ' + message_json['object']['id'])
return True return True
else: else:
@ -1942,7 +1946,8 @@ def _receive_like(recent_posts_cache: {},
lists_enabled: str, lists_enabled: str,
bold_reading: bool, dogwhistles: {}, bold_reading: bool, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> bool: buy_sites: {},
auto_cw_cache: {}) -> bool:
"""Receives a Like activity within the POST section of HTTPServer """Receives a Like activity within the POST section of HTTPServer
""" """
if message_json['type'] != 'Like': if message_json['type'] != 'Like':
@ -2057,7 +2062,8 @@ def _receive_like(recent_posts_cache: {},
False, True, False, cw_lists, False, True, False, cw_lists,
lists_enabled, timezone, mitm, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, buy_sites) minimize_all_images, None, buy_sites,
auto_cw_cache)
return True return True
@ -2079,7 +2085,8 @@ def _receive_undo_like(recent_posts_cache: {},
lists_enabled: str, lists_enabled: str,
bold_reading: bool, dogwhistles: {}, bold_reading: bool, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> bool: buy_sites: {},
auto_cw_cache: {}) -> bool:
"""Receives an undo like activity within the POST section of HTTPServer """Receives an undo like activity within the POST section of HTTPServer
""" """
if message_json['type'] != 'Undo': if message_json['type'] != 'Undo':
@ -2185,7 +2192,7 @@ def _receive_undo_like(recent_posts_cache: {},
lists_enabled, timezone, mitm, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
return True return True
@ -2208,7 +2215,8 @@ def _receive_reaction(recent_posts_cache: {},
lists_enabled: str, bold_reading: bool, lists_enabled: str, bold_reading: bool,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> bool: buy_sites: {},
auto_cw_cache: {}) -> bool:
"""Receives an emoji reaction within the POST section of HTTPServer """Receives an emoji reaction within the POST section of HTTPServer
""" """
if message_json['type'] != 'EmojiReact': if message_json['type'] != 'EmojiReact':
@ -2344,7 +2352,8 @@ def _receive_reaction(recent_posts_cache: {},
False, True, False, cw_lists, False, True, False, cw_lists,
lists_enabled, timezone, mitm, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, buy_sites) minimize_all_images, None, buy_sites,
auto_cw_cache)
return True return True
@ -2367,7 +2376,8 @@ def _receive_zot_reaction(recent_posts_cache: {},
lists_enabled: str, bold_reading: bool, lists_enabled: str, bold_reading: bool,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> bool: buy_sites: {},
auto_cw_cache: {}) -> bool:
"""Receives an zot-style emoji reaction within the POST section of """Receives an zot-style emoji reaction within the POST section of
HTTPServer A zot style emoji reaction is an ordinary reply Note whose HTTPServer A zot style emoji reaction is an ordinary reply Note whose
content is exactly one emoji content is exactly one emoji
@ -2529,7 +2539,7 @@ def _receive_zot_reaction(recent_posts_cache: {},
lists_enabled, timezone, mitm, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
return True return True
@ -2553,7 +2563,8 @@ def _receive_undo_reaction(recent_posts_cache: {},
lists_enabled: str, lists_enabled: str,
bold_reading: bool, dogwhistles: {}, bold_reading: bool, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> bool: buy_sites: {},
auto_cw_cache: {}) -> bool:
"""Receives an undo emoji reaction within the POST section of HTTPServer """Receives an undo emoji reaction within the POST section of HTTPServer
""" """
if message_json['type'] != 'Undo': if message_json['type'] != 'Undo':
@ -2677,7 +2688,7 @@ def _receive_undo_reaction(recent_posts_cache: {},
lists_enabled, timezone, mitm, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
return True return True
@ -2698,7 +2709,8 @@ def _receive_bookmark(recent_posts_cache: {},
lists_enabled: {}, bold_reading: bool, lists_enabled: {}, bold_reading: bool,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> bool: buy_sites: {},
auto_cw_cache: {}) -> bool:
"""Receives a bookmark activity within the POST section of HTTPServer """Receives a bookmark activity within the POST section of HTTPServer
""" """
if not message_json.get('type'): if not message_json.get('type'):
@ -2802,7 +2814,7 @@ def _receive_bookmark(recent_posts_cache: {},
lists_enabled, timezone, mitm, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
return True return True
@ -2825,7 +2837,8 @@ def _receive_undo_bookmark(recent_posts_cache: {},
lists_enabled: str, bold_reading: bool, lists_enabled: str, bold_reading: bool,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> bool: buy_sites: {},
auto_cw_cache: {}) -> bool:
"""Receives an undo bookmark activity within the POST section of HTTPServer """Receives an undo bookmark activity within the POST section of HTTPServer
""" """
if not message_json.get('type'): if not message_json.get('type'):
@ -2930,7 +2943,7 @@ def _receive_undo_bookmark(recent_posts_cache: {},
False, True, False, cw_lists, lists_enabled, False, True, False, cw_lists, lists_enabled,
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
dogwhistles, minimize_all_images, None, dogwhistles, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
return True return True
@ -3032,7 +3045,8 @@ def _receive_announce(recent_posts_cache: {},
dogwhistles: {}, mitm: bool, dogwhistles: {}, mitm: bool,
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}, buy_sites: {},
languages_understood: []) -> bool: languages_understood: [],
auto_cw_cache: {}) -> bool:
"""Receives an announce activity within the POST section of HTTPServer """Receives an announce activity within the POST section of HTTPServer
""" """
if message_json['type'] != 'Announce': if message_json['type'] != 'Announce':
@ -3194,7 +3208,7 @@ def _receive_announce(recent_posts_cache: {},
lists_enabled, timezone, mitm, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
if not announce_html: if not announce_html:
print('WARN: Unable to generate html for announce ' + print('WARN: Unable to generate html for announce ' +
str(message_json)) str(message_json))
@ -4161,6 +4175,7 @@ def _bounce_dm(sender_post_id: str, session, http_prefix: str,
low_bandwidth = False low_bandwidth = False
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
auto_cw_cache = {}
post_json_object = \ post_json_object = \
create_direct_message_post(base_dir, nickname, domain, port, create_direct_message_post(base_dir, nickname, domain, port,
http_prefix, content, http_prefix, content,
@ -4175,7 +4190,8 @@ def _bounce_dm(sender_post_id: str, session, http_prefix: str,
low_bandwidth, dm_license_url, low_bandwidth, dm_license_url,
dm_license_url, '', dm_license_url, '',
languages_understood, bounce_is_chat, languages_understood, bounce_is_chat,
translate, buy_url, chat_url) translate, buy_url, chat_url,
auto_cw_cache)
if not post_json_object: if not post_json_object:
print('WARN: unable to create bounce message to ' + sending_handle) print('WARN: unable to create bounce message to ' + sending_handle)
return False return False
@ -4343,7 +4359,8 @@ def _receive_question_vote(server, base_dir: str, nickname: str, domain: str,
bold_reading: bool, dogwhistles: {}, bold_reading: bool, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}, buy_sites: {},
sites_unavailable: []) -> None: sites_unavailable: [],
auto_cw_cache: {}) -> None:
"""Updates the votes on a Question/poll """Updates the votes on a Question/poll
""" """
# if this is a reply to a question then update the votes # if this is a reply to a question then update the votes
@ -4402,7 +4419,7 @@ def _receive_question_vote(server, base_dir: str, nickname: str, domain: str,
lists_enabled, timezone, mitm, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
# add id to inbox index # add id to inbox index
inbox_update_index('inbox', base_dir, handle, inbox_update_index('inbox', base_dir, handle,
@ -4631,7 +4648,7 @@ def _inbox_after_initial(server, inbox_start_time,
max_like_count, cw_lists, lists_enabled, max_like_count, cw_lists, lists_enabled,
bold_reading, dogwhistles, bold_reading, dogwhistles,
server.min_images_for_accounts, server.min_images_for_accounts,
buy_sites): buy_sites, server.auto_cw_cache):
if debug: if debug:
print('DEBUG: Like accepted from ' + actor) print('DEBUG: Like accepted from ' + actor)
fitness_performance(inbox_start_time, server.fitness, fitness_performance(inbox_start_time, server.fitness,
@ -4658,7 +4675,7 @@ def _inbox_after_initial(server, inbox_start_time,
max_like_count, cw_lists, lists_enabled, max_like_count, cw_lists, lists_enabled,
bold_reading, dogwhistles, bold_reading, dogwhistles,
server.min_images_for_accounts, server.min_images_for_accounts,
buy_sites): buy_sites, server.auto_cw_cache):
if debug: if debug:
print('DEBUG: Undo like accepted from ' + actor) print('DEBUG: Undo like accepted from ' + actor)
fitness_performance(inbox_start_time, server.fitness, fitness_performance(inbox_start_time, server.fitness,
@ -4686,7 +4703,7 @@ def _inbox_after_initial(server, inbox_start_time,
max_like_count, cw_lists, lists_enabled, max_like_count, cw_lists, lists_enabled,
bold_reading, dogwhistles, bold_reading, dogwhistles,
server.min_images_for_accounts, server.min_images_for_accounts,
buy_sites): buy_sites, server.auto_cw_cache):
if debug: if debug:
print('DEBUG: Reaction accepted from ' + actor) print('DEBUG: Reaction accepted from ' + actor)
fitness_performance(inbox_start_time, server.fitness, fitness_performance(inbox_start_time, server.fitness,
@ -4714,7 +4731,7 @@ def _inbox_after_initial(server, inbox_start_time,
max_like_count, cw_lists, lists_enabled, max_like_count, cw_lists, lists_enabled,
bold_reading, dogwhistles, bold_reading, dogwhistles,
server.min_images_for_accounts, server.min_images_for_accounts,
buy_sites): buy_sites, server.auto_cw_cache):
if debug: if debug:
print('DEBUG: Zot reaction accepted from ' + actor) print('DEBUG: Zot reaction accepted from ' + actor)
fitness_performance(inbox_start_time, server.fitness, fitness_performance(inbox_start_time, server.fitness,
@ -4743,7 +4760,7 @@ def _inbox_after_initial(server, inbox_start_time,
max_like_count, cw_lists, lists_enabled, max_like_count, cw_lists, lists_enabled,
bold_reading, dogwhistles, bold_reading, dogwhistles,
server.min_images_for_accounts, server.min_images_for_accounts,
buy_sites): buy_sites, server.auto_cw_cache):
if debug: if debug:
print('DEBUG: Undo reaction accepted from ' + actor) print('DEBUG: Undo reaction accepted from ' + actor)
fitness_performance(inbox_start_time, server.fitness, fitness_performance(inbox_start_time, server.fitness,
@ -4772,7 +4789,8 @@ def _inbox_after_initial(server, inbox_start_time,
max_like_count, cw_lists, lists_enabled, max_like_count, cw_lists, lists_enabled,
bold_reading, dogwhistles, bold_reading, dogwhistles,
server.min_images_for_accounts, server.min_images_for_accounts,
server.buy_sites): server.buy_sites,
server.auto_cw_cache):
if debug: if debug:
print('DEBUG: Bookmark accepted from ' + actor) print('DEBUG: Bookmark accepted from ' + actor)
fitness_performance(inbox_start_time, server.fitness, fitness_performance(inbox_start_time, server.fitness,
@ -4801,7 +4819,8 @@ def _inbox_after_initial(server, inbox_start_time,
max_like_count, cw_lists, lists_enabled, max_like_count, cw_lists, lists_enabled,
bold_reading, dogwhistles, bold_reading, dogwhistles,
server.min_images_for_accounts, server.min_images_for_accounts,
server.buy_sites): server.buy_sites,
server.auto_cw_cache):
if debug: if debug:
print('DEBUG: Undo bookmark accepted from ' + actor) print('DEBUG: Undo bookmark accepted from ' + actor)
fitness_performance(inbox_start_time, server.fitness, fitness_performance(inbox_start_time, server.fitness,
@ -4849,7 +4868,8 @@ def _inbox_after_initial(server, inbox_start_time,
bold_reading, dogwhistles, mitm, bold_reading, dogwhistles, mitm,
server.min_images_for_accounts, server.min_images_for_accounts,
server.buy_sites, server.buy_sites,
languages_understood): languages_understood,
server.auto_cw_cache):
if debug: if debug:
print('DEBUG: Announce accepted from ' + actor) print('DEBUG: Announce accepted from ' + actor)
fitness_performance(inbox_start_time, server.fitness, fitness_performance(inbox_start_time, server.fitness,
@ -4928,7 +4948,8 @@ def _inbox_after_initial(server, inbox_start_time,
bold_reading, dogwhistles, bold_reading, dogwhistles,
server.min_images_for_accounts, server.min_images_for_accounts,
server.buy_sites, server.buy_sites,
server.sites_unavailable) server.sites_unavailable,
server.auto_cw_cache)
fitness_performance(inbox_start_time, server.fitness, fitness_performance(inbox_start_time, server.fitness,
'INBOX', '_receive_question_vote', 'INBOX', '_receive_question_vote',
debug) debug)
@ -5254,7 +5275,8 @@ def _inbox_after_initial(server, inbox_start_time,
bold_reading, bold_reading,
dogwhistles, dogwhistles,
min_img_for_accounts, min_img_for_accounts,
buy_sites) buy_sites,
server.auto_cw_cache)
fitness_performance(inbox_start_time, fitness_performance(inbox_start_time,
server.fitness, server.fitness,
'INBOX', 'INBOX',
@ -6398,7 +6420,8 @@ def run_inbox_queue(server,
theme_name, max_like_count, theme_name, max_like_count,
cw_lists, dogwhistles, cw_lists, dogwhistles,
server.min_images_for_accounts, server.min_images_for_accounts,
max_hashtags, server.buy_sites): max_hashtags, server.buy_sites,
server.auto_cw_cache):
if debug: if debug:
print('Queue: Update accepted from ' + key_id) print('Queue: Update accepted from ' + key_id)
if os.path.isfile(queue_filename): if os.path.isfile(queue_filename):

View File

@ -252,7 +252,8 @@ def post_message_to_outbox(session, translate: {},
sites_unavailable: [], sites_unavailable: [],
max_recent_books: int, max_recent_books: int,
books_cache: {}, books_cache: {},
max_cached_readers: int) -> bool: max_cached_readers: int,
auto_cw_cache: {}) -> bool:
"""post is received by the outbox """post is received by the outbox
Client to server message post Client to server message post
https://www.w3.org/TR/activitypub/#client-to-server-outbox-delivery https://www.w3.org/TR/activitypub/#client-to-server-outbox-delivery
@ -634,7 +635,7 @@ def post_message_to_outbox(session, translate: {},
timezone, mitm, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
if is_edited_post: if is_edited_post:
message_json['type'] = 'Update' message_json['type'] = 'Update'

View File

@ -1644,12 +1644,14 @@ def _create_post_base(base_dir: str,
content_license_url: str, content_license_url: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
languages_understood: [], translate: {}, languages_understood: [], translate: {},
buy_url: str, chat_url: str) -> {}: buy_url: str, chat_url: str,
auto_cw_cache: {}) -> {}:
"""Creates a message """Creates a message
""" """
content = remove_invalid_chars(content) content = remove_invalid_chars(content)
subject = add_auto_cw(base_dir, nickname, domain, subject, content) subject = add_auto_cw(base_dir, nickname, domain, subject, content,
auto_cw_cache)
if nickname != 'news': if nickname != 'news':
mentioned_recipients = \ mentioned_recipients = \
@ -2078,7 +2080,8 @@ def create_public_post(base_dir: str,
content_license_url: str, content_license_url: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
languages_understood: [], translate: {}, languages_understood: [], translate: {},
buy_url: str, chat_url: str) -> {}: buy_url: str, chat_url: str,
auto_cw_cache: {}) -> {}:
"""Public post """Public post
""" """
domain_full = get_full_domain(domain, port) domain_full = get_full_domain(domain, port)
@ -2114,7 +2117,7 @@ def create_public_post(base_dir: str,
content_license_url, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, languages_understood, translate, buy_url,
chat_url) chat_url, auto_cw_cache)
def create_reading_post(base_dir: str, def create_reading_post(base_dir: str,
@ -2135,8 +2138,9 @@ def create_reading_post(base_dir: str,
content_license_url: str, content_license_url: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
languages_understood: [], translate: {}, languages_understood: [], translate: {},
buy_url: str, chat_url: str) -> {}: buy_url: str, chat_url: str,
""" TODO reading status post auto_cw_cache: {}) -> {}:
""" reading status post
""" """
content = '' content = ''
if mentions_str: if mentions_str:
@ -2175,7 +2179,7 @@ def create_reading_post(base_dir: str,
content_license_url, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, languages_understood, translate,
buy_url, chat_url) buy_url, chat_url, auto_cw_cache)
if post_json_object: if post_json_object:
post_json_object['object']['tag'] = [{ post_json_object['object']['tag'] = [{
'href': book_url, 'href': book_url,
@ -2230,6 +2234,7 @@ def create_blog_post(base_dir: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
languages_understood: [], translate: {}, languages_understood: [], translate: {},
buy_url: str, chat_url: str) -> {}: buy_url: str, chat_url: str) -> {}:
auto_cw_cache = {}
blog_json = \ blog_json = \
create_public_post(base_dir, create_public_post(base_dir,
nickname, domain, port, http_prefix, nickname, domain, port, http_prefix,
@ -2243,7 +2248,8 @@ def create_blog_post(base_dir: str,
True, system_language, conversation_id, True, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
url_str = get_url_from_post(blog_json['object']['url']) url_str = get_url_from_post(blog_json['object']['url'])
obj_url = remove_html(url_str) obj_url = remove_html(url_str)
if '/@/' not in obj_url: if '/@/' not in obj_url:
@ -2264,6 +2270,7 @@ def create_news_post(base_dir: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
languages_understood: [], translate: {}, languages_understood: [], translate: {},
buy_url: str, chat_url: str) -> {}: buy_url: str, chat_url: str) -> {}:
auto_cw_cache = {}
client_to_server = False client_to_server = False
in_reply_to = None in_reply_to = None
in_reply_to_atom_uri = None in_reply_to_atom_uri = None
@ -2285,7 +2292,8 @@ def create_news_post(base_dir: str,
True, system_language, conversation_id, True, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
blog['object']['type'] = 'Article' blog['object']['type'] = 'Article'
return blog return blog
@ -2302,7 +2310,8 @@ def create_question_post(base_dir: str,
system_language: str, low_bandwidth: bool, system_language: str, low_bandwidth: bool,
content_license_url: str, content_license_url: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
languages_understood: [], translate: {}) -> {}: languages_understood: [], translate: {},
auto_cw_cache: {}) -> {}:
"""Question post with multiple choice options """Question post with multiple choice options
""" """
domain_full = get_full_domain(domain, port) domain_full = get_full_domain(domain, port)
@ -2324,7 +2333,7 @@ def create_question_post(base_dir: str,
None, low_bandwidth, content_license_url, None, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, languages_understood, translate, buy_url,
chat_url) chat_url, auto_cw_cache)
message_json['object']['type'] = 'Question' message_json['object']['type'] = 'Question'
message_json['object']['oneOf'] = [] message_json['object']['oneOf'] = []
message_json['object']['votersCount'] = 0 message_json['object']['votersCount'] = 0
@ -2362,7 +2371,8 @@ def create_unlisted_post(base_dir: str,
content_license_url: str, content_license_url: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
languages_understood: [], translate: {}, languages_understood: [], translate: {},
buy_url: str, chat_url: str) -> {}: buy_url: str, chat_url: str,
auto_cw_cache: {}) -> {}:
"""Unlisted post. This has the #Public and followers links inverted. """Unlisted post. This has the #Public and followers links inverted.
""" """
domain_full = get_full_domain(domain, port) domain_full = get_full_domain(domain, port)
@ -2384,7 +2394,7 @@ def create_unlisted_post(base_dir: str,
content_license_url, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, languages_understood, translate,
buy_url, chat_url) buy_url, chat_url, auto_cw_cache)
def create_followers_only_post(base_dir: str, def create_followers_only_post(base_dir: str,
@ -2405,7 +2415,8 @@ def create_followers_only_post(base_dir: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
languages_understood: [], languages_understood: [],
translate: {}, buy_url: str, translate: {}, buy_url: str,
chat_url: str) -> {}: chat_url: str,
auto_cw_cache: {}) -> {}:
"""Followers only post """Followers only post
""" """
domain_full = get_full_domain(domain, port) domain_full = get_full_domain(domain, port)
@ -2425,7 +2436,7 @@ def create_followers_only_post(base_dir: str,
content_license_url, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, languages_understood, translate,
buy_url, chat_url) buy_url, chat_url, auto_cw_cache)
def get_mentioned_people(base_dir: str, http_prefix: str, def get_mentioned_people(base_dir: str, http_prefix: str,
@ -2484,7 +2495,8 @@ def create_direct_message_post(base_dir: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
languages_understood: [], languages_understood: [],
dm_is_chat: bool, translate: {}, dm_is_chat: bool, translate: {},
buy_url: str, chat_url: str) -> {}: buy_url: str, chat_url: str,
auto_cw_cache: {}) -> {}:
"""Direct Message post """Direct Message post
""" """
content = resolve_petnames(base_dir, nickname, domain, content) content = resolve_petnames(base_dir, nickname, domain, content)
@ -2511,7 +2523,8 @@ def create_direct_message_post(base_dir: str,
conversation_id, low_bandwidth, conversation_id, low_bandwidth,
content_license_url, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
# mentioned recipients go into To rather than Cc # mentioned recipients go into To rather than Cc
message_json['to'] = message_json['object']['cc'] message_json['to'] = message_json['object']['cc']
message_json['object']['to'] = message_json['to'] message_json['object']['to'] = message_json['to']
@ -2536,7 +2549,8 @@ def create_report_post(base_dir: str,
system_language: str, low_bandwidth: bool, system_language: str, low_bandwidth: bool,
content_license_url: str, content_license_url: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
languages_understood: [], translate: {}) -> {}: languages_understood: [], translate: {},
auto_cw_cache: {}) -> {}:
"""Send a report to moderators """Send a report to moderators
""" """
domain_full = get_full_domain(domain, port) domain_full = get_full_domain(domain, port)
@ -2618,7 +2632,7 @@ def create_report_post(base_dir: str,
None, low_bandwidth, content_license_url, None, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, languages_understood, translate,
buy_url, chat_url) buy_url, chat_url, auto_cw_cache)
if not post_json_object: if not post_json_object:
continue continue
@ -2829,6 +2843,7 @@ def send_post(signing_priv_key_pem: str, project_version: str,
low_bandwidth: bool, content_license_url: str, low_bandwidth: bool, content_license_url: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
translate: {}, buy_url: str, chat_url: str, translate: {}, buy_url: str, chat_url: str,
auto_cw_cache: {},
debug: bool = False, in_reply_to: str = None, debug: bool = False, in_reply_to: str = None,
in_reply_to_atom_uri: str = None, subject: str = None) -> int: in_reply_to_atom_uri: str = None, subject: str = None) -> int:
"""Post to another inbox. Used by unit tests. """Post to another inbox. Used by unit tests.
@ -2898,7 +2913,8 @@ def send_post(signing_priv_key_pem: str, project_version: str,
content_license_url, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, languages_understood,
translate, buy_url, chat_url) translate, buy_url, chat_url,
auto_cw_cache)
# get the senders private key # get the senders private key
private_key_pem = get_person_key(nickname, domain, base_dir, 'private') private_key_pem = get_person_key(nickname, domain, base_dir, 'private')
@ -3005,7 +3021,7 @@ def send_post_via_server(signing_priv_key_pem: str, project_version: str,
media_license_url: str, media_creator: str, media_license_url: str, media_creator: str,
event_date: str, event_time: str, event_end_time: str, event_date: str, event_time: str, event_end_time: str,
location: str, translate: {}, location: str, translate: {},
buy_url: str, chat_url: str, buy_url: str, chat_url: str, auto_cw_cache: {},
debug: bool = False, debug: bool = False,
in_reply_to: str = None, in_reply_to: str = None,
in_reply_to_atom_uri: str = None, in_reply_to_atom_uri: str = None,
@ -3099,7 +3115,7 @@ def send_post_via_server(signing_priv_key_pem: str, project_version: str,
content_license_url, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, languages_understood,
translate, buy_url, chat_url) translate, buy_url, chat_url, auto_cw_cache)
auth_header = create_basic_auth_header(from_nickname, password) auth_header = create_basic_auth_header(from_nickname, password)

View File

@ -155,7 +155,8 @@ def _update_post_schedule(base_dir: str, handle: str, httpd,
httpd.sites_unavailable, httpd.sites_unavailable,
httpd.max_recent_books, httpd.max_recent_books,
httpd.books_cache, httpd.books_cache,
httpd.max_cached_readers): httpd.max_cached_readers,
httpd.auto_cw_cache):
index_lines.remove(line) index_lines.remove(line)
try: try:
os.remove(post_filename) os.remove(post_filename)

View File

@ -796,6 +796,7 @@ def create_server_alice(path: str, domain: str, port: int,
media_creator = 'Mr Blobby' media_creator = 'Mr Blobby'
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
auto_cw_cache = {}
test_video_transcript = '' test_video_transcript = ''
create_public_post(path, nickname, domain, port, http_prefix, create_public_post(path, nickname, domain, port, http_prefix,
"No wise fish would go anywhere without a porpoise", "No wise fish would go anywhere without a porpoise",
@ -813,7 +814,8 @@ def create_server_alice(path: str, domain: str, port: int,
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(path, nickname, domain, port, http_prefix, create_public_post(path, nickname, domain, port, http_prefix,
"Curiouser and curiouser!", "Curiouser and curiouser!",
test_save_to_file, test_save_to_file,
@ -830,7 +832,8 @@ def create_server_alice(path: str, domain: str, port: int,
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(path, nickname, domain, port, http_prefix, create_public_post(path, nickname, domain, port, http_prefix,
"In the gardens of memory, in the palace " + "In the gardens of memory, in the palace " +
"of dreams, that is where you and I shall meet", "of dreams, that is where you and I shall meet",
@ -848,7 +851,8 @@ def create_server_alice(path: str, domain: str, port: int,
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
regenerate_index_for_box(path, nickname, domain, 'outbox') regenerate_index_for_box(path, nickname, domain, 'outbox')
global TEST_SERVER_ALICE_RUNNING global TEST_SERVER_ALICE_RUNNING
TEST_SERVER_ALICE_RUNNING = True TEST_SERVER_ALICE_RUNNING = True
@ -975,6 +979,7 @@ def create_server_bob(path: str, domain: str, port: int,
translate = {} translate = {}
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
auto_cw_cache = {}
test_video_transcript = '' test_video_transcript = ''
create_public_post(path, nickname, domain, port, http_prefix, create_public_post(path, nickname, domain, port, http_prefix,
"It's your life, live it your way.", "It's your life, live it your way.",
@ -992,7 +997,8 @@ def create_server_bob(path: str, domain: str, port: int,
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(path, nickname, domain, port, http_prefix, create_public_post(path, nickname, domain, port, http_prefix,
"One of the things I've realised is that " + "One of the things I've realised is that " +
"I am very simple", "I am very simple",
@ -1010,7 +1016,8 @@ def create_server_bob(path: str, domain: str, port: int,
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
create_public_post(path, nickname, domain, port, http_prefix, create_public_post(path, nickname, domain, port, http_prefix,
"Quantum physics is a bit of a passion of mine", "Quantum physics is a bit of a passion of mine",
test_save_to_file, test_save_to_file,
@ -1027,7 +1034,8 @@ def create_server_bob(path: str, domain: str, port: int,
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
regenerate_index_for_box(path, nickname, domain, 'outbox') regenerate_index_for_box(path, nickname, domain, 'outbox')
global TEST_SERVER_BOB_RUNNING global TEST_SERVER_BOB_RUNNING
TEST_SERVER_BOB_RUNNING = True TEST_SERVER_BOB_RUNNING = True
@ -1386,6 +1394,7 @@ def test_post_message_between_servers(base_dir: str) -> None:
translate = {} translate = {}
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
auto_cw_cache = {}
send_result = \ send_result = \
send_post(signing_priv_key_pem, __version__, send_post(signing_priv_key_pem, __version__,
session_alice, alice_dir, 'alice', alice_domain, alice_port, session_alice, alice_dir, 'alice', alice_domain, alice_port,
@ -1402,7 +1411,7 @@ def test_post_message_between_servers(base_dir: str) -> None:
alice_shared_items_federated_domains, alice_shared_items_federated_domains,
alice_shared_item_federation_tokens, low_bandwidth, alice_shared_item_federation_tokens, low_bandwidth,
content_license_url, media_license_url, media_creator, content_license_url, media_license_url, media_creator,
translate, buy_url, chat_url, translate, buy_url, chat_url, auto_cw_cache, True,
in_reply_to, in_reply_to_atom_uri, subject) in_reply_to, in_reply_to_atom_uri, subject)
print('send_result: ' + str(send_result)) print('send_result: ' + str(send_result))
@ -1778,6 +1787,7 @@ def test_follow_between_servers(base_dir: str) -> None:
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
video_transcript = None video_transcript = None
auto_cw_cache = {}
send_result = \ send_result = \
send_post(signing_priv_key_pem, __version__, send_post(signing_priv_key_pem, __version__,
session_alice, alice_dir, 'alice', alice_domain, alice_port, session_alice, alice_dir, 'alice', alice_domain, alice_port,
@ -1791,7 +1801,7 @@ def test_follow_between_servers(base_dir: str) -> None:
alice_shared_items_federated_domains, alice_shared_items_federated_domains,
alice_shared_item_federation_tokens, low_bandwidth, alice_shared_item_federation_tokens, low_bandwidth,
content_license_url, media_license_url, media_creator, content_license_url, media_license_url, media_creator,
translate, buy_url, chat_url, translate, buy_url, chat_url, auto_cw_cache, True,
in_reply_to, in_reply_to_atom_uri, subject) in_reply_to, in_reply_to_atom_uri, subject)
print('send_result: ' + str(send_result)) print('send_result: ' + str(send_result))
@ -2174,6 +2184,7 @@ def test_shared_items_federation(base_dir: str) -> None:
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
video_transcript = None video_transcript = None
auto_cw_cache = {}
send_result = \ send_result = \
send_post(signing_priv_key_pem, __version__, send_post(signing_priv_key_pem, __version__,
session_alice, alice_dir, 'alice', alice_domain, alice_port, session_alice, alice_dir, 'alice', alice_domain, alice_port,
@ -2187,7 +2198,7 @@ def test_shared_items_federation(base_dir: str) -> None:
alice_shared_items_federated_domains, alice_shared_items_federated_domains,
alice_shared_item_federation_tokens, low_bandwidth, alice_shared_item_federation_tokens, low_bandwidth,
content_license_url, media_license_url, media_creator, content_license_url, media_license_url, media_creator,
translate, buy_url, chat_url, True, translate, buy_url, chat_url, auto_cw_cache, True,
in_reply_to, in_reply_to_atom_uri, subject) in_reply_to, in_reply_to_atom_uri, subject)
print('send_result: ' + str(send_result)) print('send_result: ' + str(send_result))
@ -2616,6 +2627,7 @@ def test_group_follow(base_dir: str) -> None:
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
video_transcript = None video_transcript = None
auto_cw_cache = {}
send_result = \ send_result = \
send_post(signing_priv_key_pem, __version__, send_post(signing_priv_key_pem, __version__,
session_alice, alice_dir, 'alice', alice_domain, alice_port, session_alice, alice_dir, 'alice', alice_domain, alice_port,
@ -2629,7 +2641,7 @@ def test_group_follow(base_dir: str) -> None:
alice_shared_items_federated_domains, alice_shared_items_federated_domains,
alice_shared_item_federation_tokens, low_bandwidth, alice_shared_item_federation_tokens, low_bandwidth,
content_license_url, media_license_url, media_creator, content_license_url, media_license_url, media_creator,
translate, buy_url, chat_url, translate, buy_url, chat_url, auto_cw_cache, True,
in_reply_to, in_reply_to_atom_uri, subject) in_reply_to, in_reply_to_atom_uri, subject)
print('send_result: ' + str(send_result)) print('send_result: ' + str(send_result))
@ -3011,6 +3023,7 @@ def _test_create_person_account(base_dir: str):
"anything which challenges middle class sensibilities or incomes." "anything which challenges middle class sensibilities or incomes."
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
auto_cw_cache = {}
test_post_json = \ test_post_json = \
create_public_post(base_dir, nickname, domain, port, http_prefix, create_public_post(base_dir, nickname, domain, port, http_prefix,
content, save_to_file, content, save_to_file,
@ -3024,7 +3037,8 @@ def _test_create_person_account(base_dir: str):
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
assert test_post_json assert test_post_json
assert test_post_json.get('object') assert test_post_json.get('object')
assert test_post_json['object']['content'] assert test_post_json['object']['content']
@ -3051,7 +3065,8 @@ def _test_create_person_account(base_dir: str):
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
assert test_post_json assert test_post_json
assert test_post_json.get('object') assert test_post_json.get('object')
assert test_post_json['object']['content'] assert test_post_json['object']['content']
@ -3257,6 +3272,7 @@ def test_client_to_server(base_dir: str):
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
video_transcript = None video_transcript = None
auto_cw_cache = {}
send_result = \ send_result = \
send_post_via_server(signing_priv_key_pem, __version__, send_post_via_server(signing_priv_key_pem, __version__,
alice_dir, session_alice, 'alice', password, alice_dir, session_alice, 'alice', password,
@ -3271,8 +3287,8 @@ def test_client_to_server(base_dir: str):
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
event_date, event_time, event_end_time, location, event_date, event_time, event_end_time, location,
translate, buy_url, chat_url, True, None, None, translate, buy_url, chat_url, auto_cw_cache,
conversation_id, None) True, None, None, conversation_id, None)
print('send_result: ' + str(send_result)) print('send_result: ' + str(send_result))
for _ in range(30): for _ in range(30):
@ -4890,6 +4906,7 @@ def _test_reply_to_public_post(base_dir: str) -> None:
translate = {} translate = {}
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
auto_cw_cache = {}
video_transcript = '' video_transcript = ''
reply = \ reply = \
create_public_post(base_dir, nickname, domain, port, http_prefix, create_public_post(base_dir, nickname, domain, port, http_prefix,
@ -4905,7 +4922,8 @@ def _test_reply_to_public_post(base_dir: str) -> None:
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
# print(str(reply)) # print(str(reply))
expected_str = \ expected_str = \
'<p><span class=\"h-card\">' + \ '<p><span class=\"h-card\">' + \
@ -5846,6 +5864,7 @@ def _test_links_within_post(base_dir: str) -> None:
translate = {} translate = {}
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
auto_cw_cache = {}
video_transcript = '' video_transcript = ''
post_json_object = \ post_json_object = \
@ -5861,7 +5880,8 @@ def _test_links_within_post(base_dir: str) -> None:
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
expected_str = \ expected_str = \
'<p>This is a test post with links.<br><br>' + \ '<p>This is a test post with links.<br><br>' + \
@ -5906,7 +5926,8 @@ def _test_links_within_post(base_dir: str) -> None:
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
assert post_json_object['object']['content'] == content assert post_json_object['object']['content'] == content
assert post_json_object['object']['contentMap'][system_language] == content assert post_json_object['object']['contentMap'][system_language] == content
@ -6985,6 +7006,7 @@ def _test_can_replyto(base_dir: str) -> None:
translate = {} translate = {}
buy_url = '' buy_url = ''
chat_url = '' chat_url = ''
auto_cw_cache = {}
video_transcript = '' video_transcript = ''
post_json_object = \ post_json_object = \
@ -7000,7 +7022,8 @@ def _test_can_replyto(base_dir: str) -> None:
test_is_article, system_language, conversation_id, test_is_article, system_language, conversation_id,
low_bandwidth, content_license_url, low_bandwidth, content_license_url,
media_license_url, media_creator, media_license_url, media_creator,
languages_understood, translate, buy_url, chat_url) languages_understood, translate, buy_url, chat_url,
auto_cw_cache)
# set the date on the post # set the date on the post
curr_date_str = "2021-09-08T20:45:00Z" curr_date_str = "2021-09-08T20:45:00Z"
post_json_object['published'] = curr_date_str post_json_object['published'] = curr_date_str

View File

@ -42,7 +42,8 @@ def html_confirm_delete(server,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Shows a screen asking to confirm the deletion of a post """Shows a screen asking to confirm the deletion of a post
""" """
if '/statuses/' not in message_id: if '/statuses/' not in message_id:
@ -100,7 +101,8 @@ def html_confirm_delete(server,
False, False, False, False, False, False, False, False, False, False, False, False,
cw_lists, lists_enabled, timezone, mitm, cw_lists, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, buy_sites) minimize_all_images, None, buy_sites,
auto_cw_cache)
delete_post_str += '<center>' delete_post_str += '<center>'
delete_post_str += \ delete_post_str += \
' <p class="followText">' + \ ' <p class="followText">' + \

View File

@ -48,7 +48,8 @@ def html_conversation_view(authorized: bool, post_id: str,
dogwhistles: {}, access_keys: {}, dogwhistles: {}, access_keys: {},
min_images_for_accounts: [], min_images_for_accounts: [],
debug: bool, buy_sites: {}, debug: bool, buy_sites: {},
blocked_cache: []) -> str: blocked_cache: [],
auto_cw_cache: {}) -> str:
"""Show a page containing a conversation thread """Show a page containing a conversation thread
""" """
conv_posts = \ conv_posts = \
@ -119,7 +120,7 @@ def html_conversation_view(authorized: bool, post_id: str,
timezone, False, bold_reading, timezone, False, bold_reading,
dogwhistles, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
if post_str: if post_str:
conv_str += text_mode_separator + separator_str + post_str conv_str += text_mode_separator + separator_str + post_str

View File

@ -261,7 +261,8 @@ def html_new_post(edit_post_params: {},
default_month: int, default_year: int, default_month: int, default_year: int,
default_post_language: str, default_post_language: str,
buy_sites: {}, buy_sites: {},
default_buy_site: str) -> str: default_buy_site: str,
auto_cw_cache: {}) -> str:
"""New post screen """New post screen
""" """
# get the json if this is an edited post # get the json if this is an edited post
@ -446,7 +447,7 @@ def html_new_post(edit_post_params: {},
timezone, False, timezone, False,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
# about the author # about the author
if has_object_dict(post_json_object): if has_object_dict(post_json_object):
if post_json_object['object'].get('attributedTo'): if post_json_object['object'].get('attributedTo'):

View File

@ -41,7 +41,8 @@ def _html_front_screen_posts(recent_posts_cache: {}, max_recent_posts: int,
bold_reading: bool, bold_reading: bool,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Shows posts on the front screen of a news instance """Shows posts on the front screen of a news instance
These should only be public blog posts from the features timeline These should only be public blog posts from the features timeline
which is the blog timeline of the news actor which is the blog timeline of the news actor
@ -97,7 +98,7 @@ def _html_front_screen_posts(recent_posts_cache: {}, max_recent_posts: int,
timezone, False, timezone, False,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
if post_str: if post_str:
profile_str += post_str + separator_str profile_str += post_str + separator_str
ctr += 1 ctr += 1
@ -131,7 +132,8 @@ def html_front_screen(signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the news instance front screen """Show the news instance front screen
""" """
bold_reading = False bold_reading = False
@ -208,7 +210,8 @@ def html_front_screen(signing_priv_key_pem: str,
cw_lists, lists_enabled, cw_lists, lists_enabled,
bold_reading, dogwhistles, bold_reading, dogwhistles,
min_images_for_accounts, min_images_for_accounts,
buy_sites) + license_str buy_sites,
auto_cw_cache) + license_str
# Footer which is only used for system accounts # Footer which is only used for system accounts
profile_footer_str = ' </td>\n' profile_footer_str = ' </td>\n'

View File

@ -44,7 +44,7 @@ def html_likers_of_post(base_dir: str, nickname: str,
box_name: str, default_timeline: str, box_name: str, default_timeline: str,
bold_reading: bool, dogwhistles: {}, bold_reading: bool, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}, buy_sites: {}, auto_cw_cache: {},
dict_name: str = 'likes') -> str: dict_name: str = 'likes') -> str:
"""Returns html for a screen showing who liked a post """Returns html for a screen showing who liked a post
""" """
@ -116,7 +116,7 @@ def html_likers_of_post(base_dir: str, nickname: str,
timezone, mitm, bold_reading, timezone, mitm, bold_reading,
dogwhistles, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
# show likers beneath the post # show likers beneath the post
obj = post_json_object obj = post_json_object

View File

@ -64,7 +64,8 @@ def html_moderation(default_timeline: str,
dogwhistles: {}, ua_str: str, dogwhistles: {}, ua_str: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the moderation feed as html """Show the moderation feed as html
This is what you see when selecting the "mod" timeline This is what you see when selecting the "mod" timeline
""" """
@ -92,7 +93,7 @@ def html_moderation(default_timeline: str,
signing_priv_key_pem, cw_lists, lists_enabled, signing_priv_key_pem, cw_lists, lists_enabled,
timezone, bold_reading, dogwhistles, ua_str, timezone, bold_reading, dogwhistles, ua_str,
min_images_for_accounts, reverse_sequence, None, min_images_for_accounts, reverse_sequence, None,
buy_sites) buy_sites, auto_cw_cache)
def html_account_info(translate: {}, def html_account_info(translate: {},

View File

@ -2084,7 +2084,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
dogwhistles: {}, dogwhistles: {},
minimize_all_images: bool, minimize_all_images: bool,
first_post_id: str, first_post_id: str,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
""" Shows a single post as html """ Shows a single post as html
""" """
if not post_json_object: if not post_json_object:
@ -2742,7 +2743,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
dogwhistles, translate) dogwhistles, translate)
# add automatic content warnings # add automatic content warnings
summary_str = add_auto_cw(base_dir, nickname, domain, summary_str = add_auto_cw(base_dir, nickname, domain,
summary_str, content_str) summary_str, content_str,
auto_cw_cache)
content_all_str = str(summary_str) + ' ' + content_str content_all_str = str(summary_str) + ' ' + content_str
# does an emoji or lack of alt text on an image indicate a # does an emoji or lack of alt text on an image indicate a
@ -2800,7 +2802,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
dogwhistles, translate) dogwhistles, translate)
# add automatic content warnings # add automatic content warnings
summary_str = add_auto_cw(base_dir, nickname, domain, summary_str = add_auto_cw(base_dir, nickname, domain,
summary_str, content_str) summary_str, content_str,
auto_cw_cache)
if summary_str and not post_is_sensitive: if summary_str and not post_is_sensitive:
post_is_sensitive = True post_is_sensitive = True
@ -3023,7 +3026,8 @@ def html_individual_post(recent_posts_cache: {}, max_recent_posts: int,
timezone: str, mitm: bool, timezone: str, mitm: bool,
bold_reading: bool, dogwhistles: {}, bold_reading: bool, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show an individual post as html """Show an individual post as html
""" """
original_post_json = post_json_object original_post_json = post_json_object
@ -3109,7 +3113,8 @@ def html_individual_post(recent_posts_cache: {}, max_recent_posts: int,
False, authorized, False, False, False, False, False, authorized, False, False, False, False,
cw_lists, lists_enabled, timezone, mitm, cw_lists, lists_enabled, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, buy_sites) minimize_all_images, None, buy_sites,
auto_cw_cache)
message_id = remove_id_ending(post_json_object['id']) message_id = remove_id_ending(post_json_object['id'])
# show the previous posts # show the previous posts
@ -3158,7 +3163,8 @@ def html_individual_post(recent_posts_cache: {}, max_recent_posts: int,
bold_reading, bold_reading,
dogwhistles, dogwhistles,
minimize_all_images, minimize_all_images,
None, buy_sites) + post_str None, buy_sites,
auto_cw_cache) + post_str
# show the following posts # show the following posts
post_filename = locate_post(base_dir, nickname, domain, message_id) post_filename = locate_post(base_dir, nickname, domain, message_id)
@ -3199,7 +3205,7 @@ def html_individual_post(recent_posts_cache: {}, max_recent_posts: int,
timezone, False, timezone, False,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
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'
@ -3231,7 +3237,8 @@ def html_post_replies(recent_posts_cache: {}, max_recent_posts: int,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the replies to an individual post as html """Show the replies to an individual post as html
""" """
replies_str = '' replies_str = ''
@ -3263,7 +3270,7 @@ def html_post_replies(recent_posts_cache: {}, max_recent_posts: int,
timezone, False, timezone, False,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
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'):
@ -3295,7 +3302,8 @@ def html_emoji_reaction_picker(recent_posts_cache: {}, max_recent_posts: int,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Returns the emoji picker screen """Returns the emoji picker screen
""" """
minimize_all_images = False minimize_all_images = False
@ -3323,7 +3331,8 @@ def html_emoji_reaction_picker(recent_posts_cache: {}, max_recent_posts: int,
False, False, False, False, False, False, False, False, False, False, False, False,
cw_lists, lists_enabled, timezone, False, cw_lists, lists_enabled, timezone, False,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, buy_sites) minimize_all_images, None, buy_sites,
auto_cw_cache)
reactions_filename = base_dir + '/emoji/reactions.json' reactions_filename = base_dir + '/emoji/reactions.json'
if not os.path.isfile(reactions_filename): if not os.path.isfile(reactions_filename):

View File

@ -213,7 +213,8 @@ def html_profile_after_search(authorized: bool,
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}, buy_sites: {},
max_shares_on_profile: int, max_shares_on_profile: int,
no_of_books: int) -> str: no_of_books: int,
auto_cw_cache: {}) -> str:
"""Show a profile page after a search for a fediverse address """Show a profile page after a search for a fediverse address
""" """
http = False http = False
@ -551,7 +552,7 @@ def html_profile_after_search(authorized: bool,
timezone, False, timezone, False,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
if not profile_post_html: if not profile_post_html:
if debug: if debug:
print('DEBUG: no html produced for profile post: ' + print('DEBUG: no html produced for profile post: ' +
@ -926,7 +927,8 @@ def html_profile(signing_priv_key_pem: str,
actor_proxied: str, actor_proxied: str,
max_shares_on_profile: int, max_shares_on_profile: int,
sites_unavailable: [], sites_unavailable: [],
no_of_books: int) -> str: no_of_books: int,
auto_cw_cache: {}) -> str:
"""Show the profile page as html """Show the profile page as html
""" """
show_moved_accounts = False show_moved_accounts = False
@ -958,7 +960,8 @@ def html_profile(signing_priv_key_pem: str,
shared_items_federated_domains, None, shared_items_federated_domains, None,
page_number, max_items_per_page, cw_lists, page_number, max_items_per_page, cw_lists,
lists_enabled, {}, lists_enabled, {},
min_images_for_accounts, buy_sites) min_images_for_accounts, buy_sites,
auto_cw_cache)
domain, port = get_domain_from_actor(profile_json['id']) domain, port = get_domain_from_actor(profile_json['id'])
if not domain: if not domain:
@ -1469,7 +1472,8 @@ def html_profile(signing_priv_key_pem: str,
timezone, bold_reading, {}, timezone, bold_reading, {},
min_images_for_accounts, min_images_for_accounts,
max_profile_posts, max_profile_posts,
buy_sites) + license_str buy_sites,
auto_cw_cache) + license_str
if not is_group: if not is_group:
if selected == 'following': if selected == 'following':
profile_str += \ profile_str += \
@ -1576,7 +1580,8 @@ def _html_profile_posts(recent_posts_cache: {}, max_recent_posts: int,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
max_profile_posts: int, max_profile_posts: int,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Shows posts on the profile screen """Shows posts on the profile screen
These should only be public posts These should only be public posts
""" """
@ -1635,7 +1640,7 @@ def _html_profile_posts(recent_posts_cache: {}, max_recent_posts: int,
timezone, False, timezone, False,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
if post_str and item_id not in shown_items: if post_str and item_id not in shown_items:
profile_str += post_str + separator_str profile_str += post_str + separator_str
shown_items.append(item_id) shown_items.append(item_id)

View File

@ -713,7 +713,8 @@ def html_history_search(translate: {}, base_dir: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}, access_keys: {}, dogwhistles: {}, access_keys: {},
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show a page containing search results for your post history """Show a page containing search results for your post history
""" """
if historysearch.startswith("'"): if historysearch.startswith("'"):
@ -824,7 +825,7 @@ def html_history_search(translate: {}, base_dir: str,
timezone, False, bold_reading, timezone, False, bold_reading,
dogwhistles, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
if post_str: if post_str:
history_search_form += separator_str + post_str history_search_form += separator_str + post_str
index += 1 index += 1
@ -853,7 +854,7 @@ def html_hashtag_search(nickname: str, domain: str, port: int,
dogwhistles: {}, map_format: str, dogwhistles: {}, map_format: str,
access_keys: {}, box_name: str, access_keys: {}, box_name: str,
min_images_for_accounts: [], min_images_for_accounts: [],
buy_sites: {}) -> str: buy_sites: {}, auto_cw_cache: {}) -> str:
"""Show a page containing search results for a hashtag """Show a page containing search results for a hashtag
or after selecting a hashtag from the swarm or after selecting a hashtag from the swarm
""" """
@ -1046,7 +1047,7 @@ def html_hashtag_search(nickname: str, domain: str, port: int,
lists_enabled, timezone, False, lists_enabled, timezone, False,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
if post_str: if post_str:
hashtag_search_form += \ hashtag_search_form += \
text_mode_separator + separator_str + post_str text_mode_separator + separator_str + post_str
@ -1089,7 +1090,8 @@ def html_hashtag_search_remote(nickname: str, domain: str, port: int,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}, dogwhistles: {},
min_images_for_accounts: [], min_images_for_accounts: [],
debug: bool, buy_sites: {}) -> str: debug: bool, buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show a page containing search results for a remote hashtag """Show a page containing search results for a remote hashtag
""" """
hashtag = urllib.parse.unquote(hashtag_url.split('/')[-1]) hashtag = urllib.parse.unquote(hashtag_url.split('/')[-1])
@ -1250,7 +1252,7 @@ def html_hashtag_search_remote(nickname: str, domain: str, port: int,
lists_enabled, timezone, False, lists_enabled, timezone, False,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, None, minimize_all_images, None,
buy_sites) buy_sites, auto_cw_cache)
if post_str: if post_str:
hashtag_search_form += \ hashtag_search_form += \
text_mode_separator + separator_str + post_str text_mode_separator + separator_str + post_str

View File

@ -512,7 +512,8 @@ def html_timeline(default_timeline: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
last_post_id: str, last_post_id: str,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the timeline as html """Show the timeline as html
""" """
enable_timing_log = False enable_timing_log = False
@ -1058,7 +1059,8 @@ def html_timeline(default_timeline: str,
timezone, mitm, timezone, mitm,
bold_reading, dogwhistles, bold_reading, dogwhistles,
minimize_all_images, minimize_all_images,
first_post_id, buy_sites) first_post_id, buy_sites,
auto_cw_cache)
_log_timeline_timing(enable_timing_log, _log_timeline_timing(enable_timing_log,
timeline_start_time, box_name, '12') timeline_start_time, box_name, '12')
@ -1333,7 +1335,8 @@ def html_shares(default_timeline: str,
dogwhistles: {}, ua_str: str, dogwhistles: {}, ua_str: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the shares timeline as html """Show the shares timeline as html
""" """
manually_approve_followers = \ manually_approve_followers = \
@ -1366,7 +1369,8 @@ def html_shares(default_timeline: str,
cw_lists, lists_enabled, timezone, cw_lists, lists_enabled, timezone,
bold_reading, dogwhistles, ua_str, bold_reading, dogwhistles, ua_str,
min_images_for_accounts, min_images_for_accounts,
reverse_sequence, None, buy_sites) reverse_sequence, None, buy_sites,
auto_cw_cache)
def html_wanted(default_timeline: str, def html_wanted(default_timeline: str,
@ -1399,7 +1403,8 @@ def html_wanted(default_timeline: str,
dogwhistles: {}, ua_str: str, dogwhistles: {}, ua_str: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the wanted timeline as html """Show the wanted timeline as html
""" """
manually_approve_followers = \ manually_approve_followers = \
@ -1432,7 +1437,8 @@ def html_wanted(default_timeline: str,
cw_lists, lists_enabled, timezone, cw_lists, lists_enabled, timezone,
bold_reading, dogwhistles, ua_str, bold_reading, dogwhistles, ua_str,
min_images_for_accounts, min_images_for_accounts,
reverse_sequence, None, buy_sites) reverse_sequence, None, buy_sites,
auto_cw_cache)
def html_inbox(default_timeline: str, def html_inbox(default_timeline: str,
@ -1467,7 +1473,8 @@ def html_inbox(default_timeline: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
last_post_id: str, last_post_id: str,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the inbox as html """Show the inbox as html
""" """
manually_approve_followers = \ manually_approve_followers = \
@ -1501,7 +1508,7 @@ def html_inbox(default_timeline: str,
bold_reading, dogwhistles, ua_str, bold_reading, dogwhistles, ua_str,
min_images_for_accounts, min_images_for_accounts,
reverse_sequence, last_post_id, reverse_sequence, last_post_id,
buy_sites) buy_sites, auto_cw_cache)
def html_bookmarks(default_timeline: str, def html_bookmarks(default_timeline: str,
@ -1535,7 +1542,8 @@ def html_bookmarks(default_timeline: str,
dogwhistles: {}, ua_str: str, dogwhistles: {}, ua_str: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the bookmarks as html """Show the bookmarks as html
""" """
manually_approve_followers = \ manually_approve_followers = \
@ -1567,7 +1575,8 @@ def html_bookmarks(default_timeline: str,
cw_lists, lists_enabled, timezone, cw_lists, lists_enabled, timezone,
bold_reading, dogwhistles, ua_str, bold_reading, dogwhistles, ua_str,
min_images_for_accounts, min_images_for_accounts,
reverse_sequence, None, buy_sites) reverse_sequence, None, buy_sites,
auto_cw_cache)
def html_inbox_dms(default_timeline: str, def html_inbox_dms(default_timeline: str,
@ -1602,7 +1611,8 @@ def html_inbox_dms(default_timeline: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
last_post_id: str, last_post_id: str,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the DM timeline as html """Show the DM timeline as html
""" """
artist = is_artist(base_dir, nickname) artist = is_artist(base_dir, nickname)
@ -1631,7 +1641,7 @@ def html_inbox_dms(default_timeline: str,
bold_reading, dogwhistles, ua_str, bold_reading, dogwhistles, ua_str,
min_images_for_accounts, min_images_for_accounts,
reverse_sequence, last_post_id, reverse_sequence, last_post_id,
buy_sites) buy_sites, auto_cw_cache)
def html_inbox_replies(default_timeline: str, def html_inbox_replies(default_timeline: str,
@ -1666,7 +1676,8 @@ def html_inbox_replies(default_timeline: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
last_post_id: str, last_post_id: str,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the replies timeline as html """Show the replies timeline as html
""" """
artist = is_artist(base_dir, nickname) artist = is_artist(base_dir, nickname)
@ -1692,7 +1703,8 @@ def html_inbox_replies(default_timeline: str,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles, ua_str, min_images_for_accounts, dogwhistles, ua_str, min_images_for_accounts,
reverse_sequence, last_post_id, buy_sites) reverse_sequence, last_post_id, buy_sites,
auto_cw_cache)
def html_inbox_media(default_timeline: str, def html_inbox_media(default_timeline: str,
@ -1727,7 +1739,8 @@ def html_inbox_media(default_timeline: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
last_post_id: str, last_post_id: str,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the media timeline as html """Show the media timeline as html
""" """
artist = is_artist(base_dir, nickname) artist = is_artist(base_dir, nickname)
@ -1753,7 +1766,8 @@ def html_inbox_media(default_timeline: str,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles, ua_str, min_images_for_accounts, dogwhistles, ua_str, min_images_for_accounts,
reverse_sequence, last_post_id, buy_sites) reverse_sequence, last_post_id, buy_sites,
auto_cw_cache)
def html_inbox_blogs(default_timeline: str, def html_inbox_blogs(default_timeline: str,
@ -1788,7 +1802,8 @@ def html_inbox_blogs(default_timeline: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
last_post_id: str, last_post_id: str,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the blogs timeline as html """Show the blogs timeline as html
""" """
artist = is_artist(base_dir, nickname) artist = is_artist(base_dir, nickname)
@ -1814,7 +1829,8 @@ def html_inbox_blogs(default_timeline: str,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles, ua_str, min_images_for_accounts, dogwhistles, ua_str, min_images_for_accounts,
reverse_sequence, last_post_id, buy_sites) reverse_sequence, last_post_id, buy_sites,
auto_cw_cache)
def html_inbox_features(default_timeline: str, def html_inbox_features(default_timeline: str,
@ -1849,7 +1865,8 @@ def html_inbox_features(default_timeline: str,
dogwhistles: {}, ua_str: str, dogwhistles: {}, ua_str: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the features timeline as html """Show the features timeline as html
""" """
return html_timeline(default_timeline, return html_timeline(default_timeline,
@ -1874,7 +1891,8 @@ def html_inbox_features(default_timeline: str,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles, ua_str, min_images_for_accounts, dogwhistles, ua_str, min_images_for_accounts,
reverse_sequence, None, buy_sites) reverse_sequence, None, buy_sites,
auto_cw_cache)
def html_inbox_news(default_timeline: str, def html_inbox_news(default_timeline: str,
@ -1908,7 +1926,8 @@ def html_inbox_news(default_timeline: str,
dogwhistles: {}, ua_str: str, dogwhistles: {}, ua_str: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the news timeline as html """Show the news timeline as html
""" """
return html_timeline(default_timeline, return html_timeline(default_timeline,
@ -1933,7 +1952,8 @@ def html_inbox_news(default_timeline: str,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles, ua_str, min_images_for_accounts, dogwhistles, ua_str, min_images_for_accounts,
reverse_sequence, None, buy_sites) reverse_sequence, None, buy_sites,
auto_cw_cache)
def html_outbox(default_timeline: str, def html_outbox(default_timeline: str,
@ -1967,7 +1987,8 @@ def html_outbox(default_timeline: str,
dogwhistles: {}, ua_str: str, dogwhistles: {}, ua_str: str,
min_images_for_accounts: [], min_images_for_accounts: [],
reverse_sequence: bool, reverse_sequence: bool,
buy_sites: {}) -> str: buy_sites: {},
auto_cw_cache: {}) -> str:
"""Show the Outbox as html """Show the Outbox as html
""" """
manually_approve_followers = \ manually_approve_followers = \
@ -1995,4 +2016,4 @@ def html_outbox(default_timeline: str,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles, ua_str, min_images_for_accounts, dogwhistles, ua_str, min_images_for_accounts,
reverse_sequence, None, buy_sites) reverse_sequence, None, buy_sites, auto_cw_cache)