mirror of https://gitlab.com/bashrc2/epicyon
Merge branch 'main' of gitlab.com:bashrc2/epicyon
commit
6f7ca5f94e
276
daemon.py
276
daemon.py
|
@ -247,6 +247,9 @@ from languages import set_actor_languages
|
|||
from languages import get_understood_languages
|
||||
from like import update_likes_collection
|
||||
from reaction import update_reaction_collection
|
||||
from utils import get_account_timezone
|
||||
from utils import set_account_timezone
|
||||
from utils import load_account_timezones
|
||||
from utils import local_network_host
|
||||
from utils import undo_reaction_collection_entry
|
||||
from utils import get_new_post_endpoints
|
||||
|
@ -3544,6 +3547,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
if search_str.startswith('#'):
|
||||
nickname = get_nickname_from_actor(actor_str)
|
||||
# hashtag search
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
hashtag_str = \
|
||||
html_hashtag_search(self.server.css_cache,
|
||||
nickname, domain, port,
|
||||
|
@ -3568,7 +3575,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.max_like_count,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
if hashtag_str:
|
||||
msg = hashtag_str.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
|
@ -3636,6 +3644,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
# your post history search
|
||||
nickname = get_nickname_from_actor(actor_str)
|
||||
search_str = search_str.replace("'", '', 1).strip()
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
history_str = \
|
||||
html_history_search(self.server.css_cache,
|
||||
self.server.translate,
|
||||
|
@ -3663,7 +3675,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.max_like_count,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
if history_str:
|
||||
msg = history_str.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
|
@ -3704,6 +3717,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
# bookmark search
|
||||
nickname = get_nickname_from_actor(actor_str)
|
||||
search_str = search_str.replace('-', '', 1).strip()
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
bookmarks_str = \
|
||||
html_history_search(self.server.css_cache,
|
||||
self.server.translate,
|
||||
|
@ -3731,7 +3748,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.max_like_count,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
if bookmarks_str:
|
||||
msg = bookmarks_str.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
|
@ -3811,6 +3829,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.cached_webfingers
|
||||
recent_posts_cache = \
|
||||
self.server.recent_posts_cache
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
profile_str = \
|
||||
html_profile_after_search(self.server.css_cache,
|
||||
recent_posts_cache,
|
||||
|
@ -3840,7 +3862,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.max_like_count,
|
||||
signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
if profile_str:
|
||||
msg = profile_str.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
|
@ -5604,6 +5627,24 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
set_actor_languages(base_dir, actor_json, '')
|
||||
actor_changed = True
|
||||
|
||||
# change time zone
|
||||
timezone = \
|
||||
get_account_timezone(base_dir, nickname, domain)
|
||||
if fields.get('timeZone'):
|
||||
if fields['timeZone'] != timezone:
|
||||
set_account_timezone(base_dir,
|
||||
nickname, domain,
|
||||
fields['timeZone'])
|
||||
self.server.account_timezone[nickname] = \
|
||||
fields['timeZone']
|
||||
actor_changed = True
|
||||
else:
|
||||
if timezone:
|
||||
set_account_timezone(base_dir,
|
||||
nickname, domain, '')
|
||||
del self.server.account_timezone[nickname]
|
||||
actor_changed = True
|
||||
|
||||
# change tox address
|
||||
current_tox_address = get_tox_address(actor_json)
|
||||
if fields.get('toxAddress'):
|
||||
|
@ -7835,6 +7876,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
nickname = nickname.split('/')[0]
|
||||
if '?' in nickname:
|
||||
nickname = nickname.split('?')[0]
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
hashtag_str = \
|
||||
html_hashtag_search(self.server.css_cache,
|
||||
nickname, domain, port,
|
||||
|
@ -7857,7 +7902,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.max_like_count,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
if hashtag_str:
|
||||
msg = hashtag_str.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
|
@ -8047,6 +8093,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
follower_approval_active(base_dir,
|
||||
self.post_to_nickname, domain)
|
||||
show_repeats = not is_dm(announce_json)
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(self.post_to_nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(self.post_to_nickname)
|
||||
individual_post_as_html(self.server.signing_priv_key_pem, False,
|
||||
self.server.recent_posts_cache,
|
||||
self.server.max_recent_posts,
|
||||
|
@ -8074,7 +8124,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
manually_approve_followers,
|
||||
False, True, False,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
|
||||
actor_absolute = self._get_instance_url(calling_domain) + actor
|
||||
actor_path_str = \
|
||||
|
@ -8516,6 +8567,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
follower_approval_active(base_dir,
|
||||
self.post_to_nickname, domain)
|
||||
show_repeats = not is_dm(liked_post_json)
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(self.post_to_nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(self.post_to_nickname)
|
||||
individual_post_as_html(self.server.signing_priv_key_pem,
|
||||
False,
|
||||
self.server.recent_posts_cache,
|
||||
|
@ -8545,7 +8600,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
manually_approve_followers,
|
||||
False, True, False,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
else:
|
||||
print('WARN: Liked post not found: ' + liked_post_filename)
|
||||
# clear the icon from the cache so that it gets updated
|
||||
|
@ -8674,6 +8730,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
follower_approval_active(base_dir,
|
||||
self.post_to_nickname, domain)
|
||||
show_repeats = not is_dm(liked_post_json)
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(self.post_to_nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(self.post_to_nickname)
|
||||
individual_post_as_html(self.server.signing_priv_key_pem,
|
||||
False,
|
||||
self.server.recent_posts_cache,
|
||||
|
@ -8703,7 +8763,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
manually_approve_followers,
|
||||
False, True, False,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
else:
|
||||
print('WARN: Unliked post not found: ' + liked_post_filename)
|
||||
# clear the icon from the cache so that it gets updated
|
||||
|
@ -8861,6 +8922,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
follower_approval_active(base_dir,
|
||||
self.post_to_nickname, domain)
|
||||
show_repeats = not is_dm(reaction_post_json)
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(self.post_to_nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(self.post_to_nickname)
|
||||
individual_post_as_html(self.server.signing_priv_key_pem,
|
||||
False,
|
||||
self.server.recent_posts_cache,
|
||||
|
@ -8890,7 +8955,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
manually_approve_followers,
|
||||
False, True, False,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
else:
|
||||
print('WARN: Emoji reaction post not found: ' +
|
||||
reaction_post_filename)
|
||||
|
@ -9038,6 +9104,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
follower_approval_active(base_dir,
|
||||
self.post_to_nickname, domain)
|
||||
show_repeats = not is_dm(reaction_post_json)
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(self.post_to_nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(self.post_to_nickname)
|
||||
individual_post_as_html(self.server.signing_priv_key_pem,
|
||||
False,
|
||||
self.server.recent_posts_cache,
|
||||
|
@ -9067,7 +9137,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
manually_approve_followers,
|
||||
False, True, False,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
else:
|
||||
print('WARN: Unreaction post not found: ' +
|
||||
reaction_post_filename)
|
||||
|
@ -9139,6 +9210,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self._redirect_headers(actor_path_str, cookie, calling_domain)
|
||||
return
|
||||
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(self.post_to_nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(self.post_to_nickname)
|
||||
msg = \
|
||||
html_emoji_reaction_picker(self.server.css_cache,
|
||||
self.server.recent_posts_cache,
|
||||
|
@ -9163,7 +9238,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled,
|
||||
timeline_str, page_number)
|
||||
timeline_str, page_number,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -9260,6 +9336,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
follower_approval_active(base_dir,
|
||||
self.post_to_nickname, domain)
|
||||
show_repeats = not is_dm(bookmark_post_json)
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(self.post_to_nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(self.post_to_nickname)
|
||||
individual_post_as_html(self.server.signing_priv_key_pem,
|
||||
False,
|
||||
self.server.recent_posts_cache,
|
||||
|
@ -9289,7 +9369,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
manually_approve_followers,
|
||||
False, True, False,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
else:
|
||||
print('WARN: Bookmarked post not found: ' + bookmark_filename)
|
||||
# self._post_to_outbox(bookmark_json,
|
||||
|
@ -9391,6 +9472,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
follower_approval_active(base_dir,
|
||||
self.post_to_nickname, domain)
|
||||
show_repeats = not is_dm(bookmark_post_json)
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(self.post_to_nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(self.post_to_nickname)
|
||||
individual_post_as_html(self.server.signing_priv_key_pem,
|
||||
False,
|
||||
self.server.recent_posts_cache,
|
||||
|
@ -9420,7 +9505,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
manually_approve_followers,
|
||||
False, True, False,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
else:
|
||||
print('WARN: Unbookmarked post not found: ' +
|
||||
bookmark_filename)
|
||||
|
@ -9596,6 +9682,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
allow_downloads = False
|
||||
show_avatar_options = True
|
||||
avatar_url = None
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
individual_post_as_html(self.server.signing_priv_key_pem,
|
||||
allow_downloads,
|
||||
self.server.recent_posts_cache,
|
||||
|
@ -9626,7 +9716,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
show_public_only, store_to_cache,
|
||||
use_cache_only,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
else:
|
||||
print('WARN: Muted post not found: ' + mute_filename)
|
||||
|
||||
|
@ -9707,6 +9798,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
allow_downloads = False
|
||||
show_avatar_options = True
|
||||
avatar_url = None
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
individual_post_as_html(self.server.signing_priv_key_pem,
|
||||
allow_downloads,
|
||||
self.server.recent_posts_cache,
|
||||
|
@ -9737,7 +9832,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
show_public_only, store_to_cache,
|
||||
use_cache_only,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
else:
|
||||
print('WARN: Unmuted post not found: ' + mute_filename)
|
||||
if calling_domain.endswith('.onion') and onion_domain:
|
||||
|
@ -9830,6 +9926,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
twitter_replacement_domain = \
|
||||
self.server.twitter_replacement_domain
|
||||
peertube_instances = self.server.peertube_instances
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_post_replies(self.server.css_cache,
|
||||
recent_posts_cache,
|
||||
|
@ -9855,7 +9955,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.max_like_count,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -9922,6 +10023,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
twitter_replacement_domain = \
|
||||
self.server.twitter_replacement_domain
|
||||
peertube_instances = self.server.peertube_instances
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_post_replies(self.server.css_cache,
|
||||
recent_posts_cache,
|
||||
|
@ -9947,7 +10052,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.max_like_count,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -10027,6 +10133,11 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
base_dir, nickname, domain)
|
||||
shared_items_federated_domains = \
|
||||
self.server.shared_items_federated_domains
|
||||
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_profile(self.server.signing_priv_key_pem,
|
||||
self.server.rss_icon_at_top,
|
||||
|
@ -10059,7 +10170,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
roles_list,
|
||||
None, None, self.server.cw_lists,
|
||||
self.server.lists_enabled,
|
||||
self.server.content_license_url)
|
||||
self.server.content_license_url,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -10146,6 +10258,11 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.content_license_url
|
||||
peertube_instances = \
|
||||
self.server.peertube_instances
|
||||
timezone = None
|
||||
nick = nickname
|
||||
if self.server.account_timezone.get(nick):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nick)
|
||||
msg = \
|
||||
html_profile(signing_priv_key_pem,
|
||||
self.server.rss_icon_at_top,
|
||||
|
@ -10179,7 +10296,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
None, None,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled,
|
||||
content_license_url)
|
||||
content_license_url,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -10320,6 +10438,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
return True
|
||||
remove_post_interactions(pjo, True)
|
||||
if self._request_http():
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_individual_post(self.server.css_cache,
|
||||
self.server.recent_posts_cache,
|
||||
|
@ -10345,7 +10467,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.max_like_count,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -10573,6 +10696,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.shared_items_federated_domains
|
||||
allow_local_network_access = \
|
||||
self.server.allow_local_network_access
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = html_inbox(self.server.css_cache,
|
||||
default_timeline,
|
||||
recent_posts_cache,
|
||||
|
@ -10612,7 +10739,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
shared_items_federated_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
if getreq_start_time:
|
||||
fitness_performance(getreq_start_time,
|
||||
self.server.fitness,
|
||||
|
@ -10727,6 +10855,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.twitter_replacement_domain
|
||||
show_published_date_only = \
|
||||
self.server.show_published_date_only
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_inbox_dms(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -10766,7 +10898,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
shared_items_federated_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -10874,6 +11007,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.twitter_replacement_domain
|
||||
show_published_date_only = \
|
||||
self.server.show_published_date_only
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_inbox_replies(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -10913,7 +11050,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
shared_items_federated_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -11018,6 +11156,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.allow_local_network_access
|
||||
twitter_replacement_domain = \
|
||||
self.server.twitter_replacement_domain
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_inbox_media(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -11058,7 +11200,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
fed_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -11163,6 +11306,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.allow_local_network_access
|
||||
twitter_replacement_domain = \
|
||||
self.server.twitter_replacement_domain
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_inbox_blogs(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -11203,7 +11350,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
fed_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -11316,6 +11464,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
fed_domains = \
|
||||
self.server.shared_items_federated_domains
|
||||
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_inbox_news(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -11357,7 +11509,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
fed_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -11473,6 +11626,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.twitter_replacement_domain
|
||||
show_published_date_only = \
|
||||
self.server.show_published_date_only
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_inbox_features(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -11514,7 +11671,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
shared_items_federated_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -11585,6 +11743,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
full_width_tl_button_header = \
|
||||
self.server.full_width_tl_button_header
|
||||
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_shares(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -11622,7 +11784,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.shared_items_federated_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled, timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -11670,6 +11832,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.key_shortcuts[nickname]
|
||||
full_width_tl_button_header = \
|
||||
self.server.full_width_tl_button_header
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_wanted(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -11707,7 +11873,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.shared_items_federated_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -11794,6 +11961,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.twitter_replacement_domain
|
||||
show_published_date_only = \
|
||||
self.server.show_published_date_only
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_bookmarks(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -11834,7 +12005,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
shared_items_federated_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -11934,6 +12106,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
access_keys = \
|
||||
self.server.key_shortcuts[nickname]
|
||||
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_outbox(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -11972,7 +12148,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.shared_items_federated_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -12068,6 +12245,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.allow_local_network_access
|
||||
show_published_date_only = \
|
||||
self.server.show_published_date_only
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_moderation(self.server.css_cache,
|
||||
self.server.default_timeline,
|
||||
|
@ -12107,7 +12288,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
shared_items_federated_domains,
|
||||
self.server.signing_priv_key_pem,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled)
|
||||
self.server.lists_enabled,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -12198,6 +12380,10 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
base_dir, nickname, domain)
|
||||
shared_items_federated_domains = \
|
||||
self.server.shared_items_federated_domains
|
||||
timezone = None
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_profile(self.server.signing_priv_key_pem,
|
||||
self.server.rss_icon_at_top,
|
||||
|
@ -12232,7 +12418,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
page_number, SHARES_PER_PAGE,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled,
|
||||
self.server.content_license_url)
|
||||
self.server.content_license_url,
|
||||
timezone)
|
||||
msg = msg.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
|
@ -12307,6 +12494,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
|
||||
access_keys = self.server.access_keys
|
||||
city = None
|
||||
timezone = None
|
||||
if '/users/' in path:
|
||||
nickname = path.split('/users/')[1]
|
||||
if '/' in nickname:
|
||||
|
@ -12317,6 +12505,9 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
|
||||
city = get_spoofed_city(self.server.city,
|
||||
base_dir, nickname, domain)
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
content_license_url = \
|
||||
self.server.content_license_url
|
||||
shared_items_federated_domains = \
|
||||
|
@ -12356,7 +12547,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
FOLLOWS_PER_PAGE,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled,
|
||||
content_license_url).encode('utf-8')
|
||||
content_license_url,
|
||||
timezone).encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html',
|
||||
msglen, cookie, calling_domain, False)
|
||||
|
@ -12428,6 +12620,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
|
||||
access_keys = self.server.access_keys
|
||||
city = None
|
||||
timezone = None
|
||||
if '/users/' in path:
|
||||
nickname = path.split('/users/')[1]
|
||||
if '/' in nickname:
|
||||
|
@ -12438,6 +12631,9 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
|
||||
city = get_spoofed_city(self.server.city,
|
||||
base_dir, nickname, domain)
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
content_license_url = \
|
||||
self.server.content_license_url
|
||||
shared_items_federated_domains = \
|
||||
|
@ -12478,7 +12674,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
FOLLOWS_PER_PAGE,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled,
|
||||
content_license_url).encode('utf-8')
|
||||
content_license_url,
|
||||
timezone).encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
cookie, calling_domain, False)
|
||||
|
@ -12568,6 +12765,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
|
||||
access_keys = self.server.access_keys
|
||||
city = None
|
||||
timezone = None
|
||||
if '/users/' in path:
|
||||
nickname = path.split('/users/')[1]
|
||||
if '/' in nickname:
|
||||
|
@ -12578,6 +12776,9 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
|
||||
city = get_spoofed_city(self.server.city,
|
||||
base_dir, nickname, domain)
|
||||
if self.server.account_timezone.get(nickname):
|
||||
timezone = \
|
||||
self.server.account_timezone.get(nickname)
|
||||
msg = \
|
||||
html_profile(self.server.signing_priv_key_pem,
|
||||
self.server.rss_icon_at_top,
|
||||
|
@ -12612,7 +12813,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
None, None, None,
|
||||
self.server.cw_lists,
|
||||
self.server.lists_enabled,
|
||||
self.server.content_license_url).encode('utf-8')
|
||||
self.server.content_license_url,
|
||||
timezone).encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/html', msglen,
|
||||
cookie, calling_domain, False)
|
||||
|
@ -19217,6 +19419,8 @@ def run_daemon(dyslexic_font: bool,
|
|||
# scan the theme directory for any svg files containing scripts
|
||||
assert not scan_themes_for_scripts(base_dir)
|
||||
|
||||
httpd.account_timezone = load_account_timezones(base_dir)
|
||||
|
||||
httpd.post_to_nickname = None
|
||||
|
||||
httpd.nodeinfo_is_active = False
|
||||
|
|
|
@ -1362,7 +1362,7 @@ def run_desktop_client(base_dir: str, proxy_type: str, http_prefix: str,
|
|||
content_license_url = 'https://creativecommons.org/licenses/by/4.0'
|
||||
|
||||
blocked_cache = {}
|
||||
languages_understood = [system_language]
|
||||
languages_understood = []
|
||||
|
||||
indent = ' '
|
||||
if show_new_posts:
|
||||
|
|
10
epicyon.py
10
epicyon.py
|
@ -263,7 +263,12 @@ parser.add_argument('--twitterdomain', dest='twitter_replacement_domain',
|
|||
help='Domain used to replace twitter.com')
|
||||
parser.add_argument('--language', dest='language',
|
||||
type=str, default=None,
|
||||
help='Language code, eg. en/fr/de/es')
|
||||
help='Specify a single language code, ' +
|
||||
'eg. "en" or "fr" or "de"')
|
||||
parser.add_argument('--languagesUnderstood', dest='languages_understood',
|
||||
type=str, default=None,
|
||||
help='List of the default languages understood eg. ' +
|
||||
'"en / fr"')
|
||||
parser.add_argument('-a', '--addaccount', dest='addaccount',
|
||||
type=str, default=None,
|
||||
help='Adds a new account')
|
||||
|
@ -1394,7 +1399,8 @@ if args.message:
|
|||
signing_priv_key_pem = None
|
||||
if args.secure_mode:
|
||||
signing_priv_key_pem = get_instance_actor_key(base_dir, domain)
|
||||
languages_understood = [args.language]
|
||||
if args.languages_understood:
|
||||
languages_understood = [args.languages_understood]
|
||||
|
||||
print('Sending post to ' + args.sendto)
|
||||
send_post_via_server(signing_priv_key_pem, __version__,
|
||||
|
|
38
inbox.py
38
inbox.py
|
@ -17,6 +17,7 @@ from languages import understood_post_language
|
|||
from like import update_likes_collection
|
||||
from reaction import update_reaction_collection
|
||||
from reaction import valid_emoji_content
|
||||
from utils import get_account_timezone
|
||||
from utils import domain_permitted
|
||||
from utils import is_group_account
|
||||
from utils import is_system_account
|
||||
|
@ -294,7 +295,8 @@ def _inbox_store_post_to_html_cache(recent_posts_cache: {},
|
|||
max_like_count: int,
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {},
|
||||
lists_enabled: str) -> None:
|
||||
lists_enabled: str,
|
||||
timezone: str) -> None:
|
||||
"""Converts the json post into html and stores it in a cache
|
||||
This enables the post to be quickly displayed later
|
||||
"""
|
||||
|
@ -319,7 +321,7 @@ def _inbox_store_post_to_html_cache(recent_posts_cache: {},
|
|||
peertube_instances, allow_local_network_access,
|
||||
theme_name, system_language, max_like_count,
|
||||
not_dm, True, True, False, True, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def valid_inbox(base_dir: str, nickname: str, domain: str) -> bool:
|
||||
|
@ -1100,6 +1102,7 @@ def _receive_like(recent_posts_cache: {},
|
|||
manually_approve_followers = \
|
||||
follower_approval_active(base_dir, handle_name, domain)
|
||||
not_dm = not is_dm(liked_post_json)
|
||||
timezone = get_account_timezone(base_dir, handle_name, domain)
|
||||
individual_post_as_html(signing_priv_key_pem, False,
|
||||
recent_posts_cache, max_recent_posts,
|
||||
translate, page_number, base_dir,
|
||||
|
@ -1118,7 +1121,7 @@ def _receive_like(recent_posts_cache: {},
|
|||
show_individual_post_icons,
|
||||
manually_approve_followers,
|
||||
False, True, False, cw_lists,
|
||||
lists_enabled)
|
||||
lists_enabled, timezone)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -1213,6 +1216,7 @@ def _receive_undo_like(recent_posts_cache: {},
|
|||
manually_approve_followers = \
|
||||
follower_approval_active(base_dir, handle_name, domain)
|
||||
not_dm = not is_dm(liked_post_json)
|
||||
timezone = get_account_timezone(base_dir, handle_name, domain)
|
||||
individual_post_as_html(signing_priv_key_pem, False,
|
||||
recent_posts_cache, max_recent_posts,
|
||||
translate, page_number, base_dir,
|
||||
|
@ -1231,7 +1235,7 @@ def _receive_undo_like(recent_posts_cache: {},
|
|||
show_individual_post_icons,
|
||||
manually_approve_followers,
|
||||
False, True, False, cw_lists,
|
||||
lists_enabled)
|
||||
lists_enabled, timezone)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -1362,6 +1366,7 @@ def _receive_reaction(recent_posts_cache: {},
|
|||
manually_approve_followers = \
|
||||
follower_approval_active(base_dir, handle_name, domain)
|
||||
not_dm = not is_dm(reaction_post_json)
|
||||
timezone = get_account_timezone(base_dir, handle_name, domain)
|
||||
individual_post_as_html(signing_priv_key_pem, False,
|
||||
recent_posts_cache, max_recent_posts,
|
||||
translate, page_number, base_dir,
|
||||
|
@ -1381,7 +1386,7 @@ def _receive_reaction(recent_posts_cache: {},
|
|||
show_individual_post_icons,
|
||||
manually_approve_followers,
|
||||
False, True, False, cw_lists,
|
||||
lists_enabled)
|
||||
lists_enabled, timezone)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -1495,6 +1500,7 @@ def _receive_undo_reaction(recent_posts_cache: {},
|
|||
manually_approve_followers = \
|
||||
follower_approval_active(base_dir, handle_name, domain)
|
||||
not_dm = not is_dm(reaction_post_json)
|
||||
timezone = get_account_timezone(base_dir, handle_name, domain)
|
||||
individual_post_as_html(signing_priv_key_pem, False,
|
||||
recent_posts_cache, max_recent_posts,
|
||||
translate, page_number, base_dir,
|
||||
|
@ -1514,7 +1520,7 @@ def _receive_undo_reaction(recent_posts_cache: {},
|
|||
show_individual_post_icons,
|
||||
manually_approve_followers,
|
||||
False, True, False, cw_lists,
|
||||
lists_enabled)
|
||||
lists_enabled, timezone)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -1606,6 +1612,7 @@ def _receive_bookmark(recent_posts_cache: {},
|
|||
manually_approve_followers = \
|
||||
follower_approval_active(base_dir, nickname, domain)
|
||||
not_dm = not is_dm(bookmarked_post_json)
|
||||
timezone = get_account_timezone(base_dir, nickname, domain)
|
||||
individual_post_as_html(signing_priv_key_pem, False,
|
||||
recent_posts_cache, max_recent_posts,
|
||||
translate, page_number, base_dir,
|
||||
|
@ -1624,7 +1631,7 @@ def _receive_bookmark(recent_posts_cache: {},
|
|||
show_individual_post_icons,
|
||||
manually_approve_followers,
|
||||
False, True, False, cw_lists,
|
||||
lists_enabled)
|
||||
lists_enabled, timezone)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -1720,6 +1727,7 @@ def _receive_undo_bookmark(recent_posts_cache: {},
|
|||
manually_approve_followers = \
|
||||
follower_approval_active(base_dir, nickname, domain)
|
||||
not_dm = not is_dm(bookmarked_post_json)
|
||||
timezone = get_account_timezone(base_dir, nickname, domain)
|
||||
individual_post_as_html(signing_priv_key_pem, False,
|
||||
recent_posts_cache, max_recent_posts,
|
||||
translate, page_number, base_dir,
|
||||
|
@ -1737,7 +1745,8 @@ def _receive_undo_bookmark(recent_posts_cache: {},
|
|||
max_like_count, not_dm,
|
||||
show_individual_post_icons,
|
||||
manually_approve_followers,
|
||||
False, True, False, cw_lists, lists_enabled)
|
||||
False, True, False, cw_lists, lists_enabled,
|
||||
timezone)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -1926,6 +1935,7 @@ def _receive_announce(recent_posts_cache: {},
|
|||
not_dm = True
|
||||
if debug:
|
||||
print('Generating html for announce ' + message_json['id'])
|
||||
timezone = get_account_timezone(base_dir, nickname, domain)
|
||||
announce_html = \
|
||||
individual_post_as_html(signing_priv_key_pem, True,
|
||||
recent_posts_cache, max_recent_posts,
|
||||
|
@ -1945,7 +1955,7 @@ def _receive_announce(recent_posts_cache: {},
|
|||
show_individual_post_icons,
|
||||
manually_approve_followers,
|
||||
False, True, False, cw_lists,
|
||||
lists_enabled)
|
||||
lists_enabled, timezone)
|
||||
if not announce_html:
|
||||
print('WARN: Unable to generate html for announce ' +
|
||||
str(message_json))
|
||||
|
@ -3060,6 +3070,7 @@ def _receive_question_vote(base_dir: str, nickname: str, domain: str,
|
|||
manually_approve_followers = \
|
||||
follower_approval_active(base_dir, nickname, domain)
|
||||
not_dm = not is_dm(question_json)
|
||||
timezone = get_account_timezone(base_dir, nickname, domain)
|
||||
individual_post_as_html(signing_priv_key_pem, False,
|
||||
recent_posts_cache, max_recent_posts,
|
||||
translate, page_number, base_dir,
|
||||
|
@ -3078,7 +3089,7 @@ def _receive_question_vote(base_dir: str, nickname: str, domain: str,
|
|||
show_individual_post_icons,
|
||||
manually_approve_followers,
|
||||
False, True, False, cw_lists,
|
||||
lists_enabled)
|
||||
lists_enabled, timezone)
|
||||
|
||||
# add id to inbox index
|
||||
inbox_update_index('inbox', base_dir, handle,
|
||||
|
@ -3600,6 +3611,8 @@ def _inbox_after_initial(recent_posts_cache: {}, max_recent_posts: int,
|
|||
handle_name = handle.split('@')[0]
|
||||
allow_local_net_access = allow_local_network_access
|
||||
show_pub_date_only = show_published_date_only
|
||||
timezone = get_account_timezone(base_dir,
|
||||
handle_name, domain)
|
||||
_inbox_store_post_to_html_cache(recent_posts_cache,
|
||||
max_recent_posts,
|
||||
translate, base_dir,
|
||||
|
@ -3620,7 +3633,8 @@ def _inbox_after_initial(recent_posts_cache: {}, max_recent_posts: int,
|
|||
max_like_count,
|
||||
signing_priv_key_pem,
|
||||
cw_lists,
|
||||
lists_enabled)
|
||||
lists_enabled,
|
||||
timezone)
|
||||
if debug:
|
||||
time_diff = \
|
||||
str(int((time.time() - html_cache_start_time) *
|
||||
|
@ -4542,7 +4556,7 @@ def run_inbox_queue(recent_posts_cache: {}, max_recent_posts: int,
|
|||
for handle, _ in recipients_dict.items():
|
||||
destination = \
|
||||
queue_json['destination'].replace(inbox_handle, handle)
|
||||
languages_understood = [system_language]
|
||||
languages_understood = []
|
||||
_inbox_after_initial(recent_posts_cache,
|
||||
max_recent_posts,
|
||||
session, key_id, handle,
|
||||
|
|
12
languages.py
12
languages.py
|
@ -51,8 +51,11 @@ def set_actor_languages(base_dir: str, actor_json: {},
|
|||
languages_str: str) -> None:
|
||||
"""Sets the languages used by the given actor
|
||||
"""
|
||||
separator = ','
|
||||
if '/' in languages_str:
|
||||
languages_str = languages_str.strip()
|
||||
separator = None
|
||||
if ',' in languages_str:
|
||||
separator = ','
|
||||
elif '/' in languages_str:
|
||||
separator = '/'
|
||||
elif ',' in languages_str:
|
||||
separator = ','
|
||||
|
@ -62,7 +65,10 @@ def set_actor_languages(base_dir: str, actor_json: {},
|
|||
separator = '+'
|
||||
elif ' ' in languages_str:
|
||||
separator = ' '
|
||||
lang_list = languages_str.lower().split(separator)
|
||||
if separator:
|
||||
lang_list = languages_str.lower().split(separator)
|
||||
else:
|
||||
lang_list = [languages_str.lower()]
|
||||
lang_list2 = ''
|
||||
for lang in lang_list:
|
||||
lang = lang.strip()
|
||||
|
|
|
@ -16,6 +16,7 @@ from posts import outbox_message_create_wrap
|
|||
from posts import save_post_to_box
|
||||
from posts import send_to_followers_thread
|
||||
from posts import send_to_named_addresses_thread
|
||||
from utils import get_account_timezone
|
||||
from utils import has_object_stringType
|
||||
from utils import get_base_content_from_post
|
||||
from utils import has_object_dict
|
||||
|
@ -454,6 +455,9 @@ def post_message_to_outbox(session, translate: {},
|
|||
manually_approve_followers = \
|
||||
follower_approval_active(base_dir,
|
||||
post_to_nickname, domain)
|
||||
timezone = \
|
||||
get_account_timezone(base_dir,
|
||||
post_to_nickname, domain)
|
||||
individual_post_as_html(signing_priv_key_pem,
|
||||
False, recent_posts_cache,
|
||||
max_recent_posts,
|
||||
|
@ -477,7 +481,8 @@ def post_message_to_outbox(session, translate: {},
|
|||
show_individual_post_icons,
|
||||
manually_approve_followers,
|
||||
False, True, use_cache_only,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled,
|
||||
timezone)
|
||||
|
||||
if outbox_announce(recent_posts_cache,
|
||||
base_dir, message_json, debug):
|
||||
|
|
22
tests.py
22
tests.py
|
@ -54,6 +54,7 @@ from follow import clear_followers
|
|||
from follow import send_follow_requestViaServer
|
||||
from follow import send_unfollow_request_via_server
|
||||
from siteactive import site_is_active
|
||||
from utils import convert_published_to_local_timezone
|
||||
from utils import convert_to_snake_case
|
||||
from utils import get_sha_256
|
||||
from utils import dangerous_svg
|
||||
|
@ -6628,6 +6629,26 @@ def _test_safe_webtext() -> None:
|
|||
assert expected_text == safe_text
|
||||
|
||||
|
||||
def _test_published_to_local_timezone() -> None:
|
||||
print('published_to_local_timezone')
|
||||
published_str = '2022-02-25T20:15:00Z'
|
||||
timezone = 'Europe/Berlin'
|
||||
published = \
|
||||
datetime.datetime.strptime(published_str, "%Y-%m-%dT%H:%M:%SZ")
|
||||
datetime_object = \
|
||||
convert_published_to_local_timezone(published, timezone)
|
||||
local_time_str = datetime_object.strftime("%a %b %d, %H:%M")
|
||||
assert local_time_str == 'Fri Feb 25, 21:15'
|
||||
|
||||
timezone = 'Asia/Seoul'
|
||||
published = \
|
||||
datetime.datetime.strptime(published_str, "%Y-%m-%dT%H:%M:%SZ")
|
||||
datetime_object = \
|
||||
convert_published_to_local_timezone(published, timezone)
|
||||
local_time_str = datetime_object.strftime("%a %b %d, %H:%M")
|
||||
assert local_time_str == 'Sat Feb 26, 05:15'
|
||||
|
||||
|
||||
def run_all_tests():
|
||||
base_dir = os.getcwd()
|
||||
print('Running tests...')
|
||||
|
@ -6644,6 +6665,7 @@ def run_all_tests():
|
|||
'message_json', 'liked_post_json'])
|
||||
_test_checkbox_names()
|
||||
_test_functions()
|
||||
_test_published_to_local_timezone()
|
||||
_test_safe_webtext()
|
||||
_test_get_link_from_rss_item()
|
||||
_test_xml_podcast_dict(base_dir)
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "متعدد الحالات",
|
||||
"Lots of things": "أشياء كثيرة",
|
||||
"Created": "مخلوق",
|
||||
"It is done": "تم"
|
||||
"It is done": "تم",
|
||||
"Time Zone": "وحدة زمنية"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Estat múltiple",
|
||||
"Lots of things": "Moltes coses",
|
||||
"Created": "Creat",
|
||||
"It is done": "Esta fet"
|
||||
"It is done": "Esta fet",
|
||||
"Time Zone": "Fus horari"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Statws Aml",
|
||||
"Lots of things": "Llawer o pethau",
|
||||
"Created": "Wedi creu",
|
||||
"It is done": "Mae'n cael ei wneud"
|
||||
"It is done": "Mae'n cael ei wneud",
|
||||
"Time Zone": "Parth Amser"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Multi-Status",
|
||||
"Lots of things": "Viele Dinge",
|
||||
"Created": "Erstellt",
|
||||
"It is done": "Es ist vollbracht"
|
||||
"It is done": "Es ist vollbracht",
|
||||
"Time Zone": "Zeitzone"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Multi Status",
|
||||
"Lots of things": "Lots of things",
|
||||
"Created": "Created",
|
||||
"It is done": "It is done"
|
||||
"It is done": "It is done",
|
||||
"Time Zone": "Time Zone"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Estado múltiple",
|
||||
"Lots of things": "Muchas cosas",
|
||||
"Created": "Creada",
|
||||
"It is done": "Se hace"
|
||||
"It is done": "Se hace",
|
||||
"Time Zone": "Zona horaria"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Statut multiple",
|
||||
"Lots of things": "Beaucoup de choses",
|
||||
"Created": "Créé",
|
||||
"It is done": "C'est fait"
|
||||
"It is done": "C'est fait",
|
||||
"Time Zone": "Fuseau horaire"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Stádas Il",
|
||||
"Lots of things": "A lán rudaí",
|
||||
"Created": "Cruthaithe",
|
||||
"It is done": "Déantar é"
|
||||
"It is done": "Déantar é",
|
||||
"Time Zone": "Crios Ama"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "बहु स्थिति",
|
||||
"Lots of things": "बहुत सी बातें",
|
||||
"Created": "बनाया था",
|
||||
"It is done": "हो गया है"
|
||||
"It is done": "हो गया है",
|
||||
"Time Zone": "समय क्षेत्र"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Stato multiplo",
|
||||
"Lots of things": "Un sacco di cose",
|
||||
"Created": "Creata",
|
||||
"It is done": "È fatta"
|
||||
"It is done": "È fatta",
|
||||
"Time Zone": "Fuso orario"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "マルチステータス",
|
||||
"Lots of things": "多くの物",
|
||||
"Created": "作成した",
|
||||
"It is done": "されております"
|
||||
"It is done": "されております",
|
||||
"Time Zone": "タイムゾーン"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Multi Status",
|
||||
"Lots of things": "Gelek tişt",
|
||||
"Created": "Afirandin",
|
||||
"It is done": "Tê kirin"
|
||||
"It is done": "Tê kirin",
|
||||
"Time Zone": "Qada demê"
|
||||
}
|
||||
|
|
|
@ -506,5 +506,6 @@
|
|||
"Multi Status": "Multi Status",
|
||||
"Lots of things": "Lots of things",
|
||||
"Created": "Created",
|
||||
"It is done": "It is done"
|
||||
"It is done": "It is done",
|
||||
"Time Zone": "Time Zone"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Vários status",
|
||||
"Lots of things": "Muitas coisas",
|
||||
"Created": "Criada",
|
||||
"It is done": "Está feito"
|
||||
"It is done": "Está feito",
|
||||
"Time Zone": "Fuso horário"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Мульти статус",
|
||||
"Lots of things": "Много всего",
|
||||
"Created": "Созданный",
|
||||
"It is done": "Сделано"
|
||||
"It is done": "Сделано",
|
||||
"Time Zone": "Часовой пояс"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "Hali nyingi",
|
||||
"Lots of things": "Mambo mengi",
|
||||
"Created": "Imeundwa",
|
||||
"It is done": "Imefanyika"
|
||||
"It is done": "Imefanyika",
|
||||
"Time Zone": "Eneo la Saa"
|
||||
}
|
||||
|
|
|
@ -510,5 +510,6 @@
|
|||
"Multi Status": "多状态",
|
||||
"Lots of things": "很多事情",
|
||||
"Created": "已创建",
|
||||
"It is done": "完成了"
|
||||
"It is done": "完成了",
|
||||
"Time Zone": "时区"
|
||||
}
|
||||
|
|
68
utils.py
68
utils.py
|
@ -15,6 +15,7 @@ import datetime
|
|||
import json
|
||||
import idna
|
||||
import locale
|
||||
from dateutil.tz import tz
|
||||
from pprint import pprint
|
||||
from cryptography.hazmat.backends import default_backend
|
||||
from cryptography.hazmat.primitives import hashes
|
||||
|
@ -78,6 +79,8 @@ def get_actor_languages_list(actor_json: {}) -> []:
|
|||
lang_list_temp = lang_str.split('+')
|
||||
elif ' ' in lang_str:
|
||||
lang_list_temp = lang_str.split(' ')
|
||||
else:
|
||||
return [lang_str]
|
||||
lang_list = []
|
||||
for lang in lang_list_temp:
|
||||
lang = lang.strip()
|
||||
|
@ -3348,3 +3351,68 @@ def valid_hash_tag(hashtag: str) -> bool:
|
|||
if _is_valid_language(hashtag):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def convert_published_to_local_timezone(published, timezone: str) -> str:
|
||||
"""Converts a post published time into local time
|
||||
"""
|
||||
from_zone = tz.gettz('UTC')
|
||||
if timezone:
|
||||
try:
|
||||
to_zone = tz.gettz(timezone)
|
||||
except BaseException:
|
||||
pass
|
||||
if not timezone:
|
||||
return published
|
||||
|
||||
utc = published.replace(tzinfo=from_zone)
|
||||
local_time = utc.astimezone(to_zone)
|
||||
return local_time
|
||||
|
||||
|
||||
def load_account_timezones(base_dir: str) -> {}:
|
||||
"""Returns a dictionary containing the preferred timezone for each account
|
||||
"""
|
||||
account_timezone = {}
|
||||
for subdir, dirs, files in os.walk(base_dir + '/accounts'):
|
||||
for acct in dirs:
|
||||
if '@' not in acct:
|
||||
continue
|
||||
if acct.startswith('inbox@') or acct.startswith('Actor@'):
|
||||
continue
|
||||
acct_dir = os.path.join(base_dir + '/accounts', acct)
|
||||
tz_filename = acct_dir + '/timezone.txt'
|
||||
if not os.path.isfile(tz_filename):
|
||||
continue
|
||||
timezone = None
|
||||
with open(tz_filename, 'r') as fp_timezone:
|
||||
timezone = fp_timezone.read().strip()
|
||||
if timezone:
|
||||
nickname = acct.split('@')[0]
|
||||
account_timezone[nickname] = timezone
|
||||
break
|
||||
return account_timezone
|
||||
|
||||
|
||||
def get_account_timezone(base_dir: str, nickname: str, domain: str) -> str:
|
||||
"""Returns the timezone for the given account
|
||||
"""
|
||||
tz_filename = \
|
||||
base_dir + '/accounts/' + nickname + '@' + domain + '/timezone.txt'
|
||||
if not os.path.isfile(tz_filename):
|
||||
return None
|
||||
timezone = None
|
||||
with open(tz_filename, 'r') as fp_timezone:
|
||||
timezone = fp_timezone.read().strip()
|
||||
return timezone
|
||||
|
||||
|
||||
def set_account_timezone(base_dir: str, nickname: str, domain: str,
|
||||
timezone: str) -> None:
|
||||
"""Sets the timezone for the given account
|
||||
"""
|
||||
tz_filename = \
|
||||
base_dir + '/accounts/' + nickname + '@' + domain + '/timezone.txt'
|
||||
timezone = timezone.strip()
|
||||
with open(tz_filename, 'w+') as fp_timezone:
|
||||
fp_timezone.write(timezone)
|
||||
|
|
|
@ -17,6 +17,7 @@ from utils import load_json
|
|||
from utils import get_config_param
|
||||
from utils import get_alt_path
|
||||
from utils import acct_dir
|
||||
from utils import get_account_timezone
|
||||
from webapp_utils import set_custom_background
|
||||
from webapp_utils import html_header_with_external_style
|
||||
from webapp_utils import html_footer
|
||||
|
@ -64,6 +65,7 @@ def html_confirm_delete(css_cache: {},
|
|||
get_config_param(base_dir, 'instanceTitle')
|
||||
delete_post_str = \
|
||||
html_header_with_external_style(css_filename, instance_title, None)
|
||||
timezone = get_account_timezone(base_dir, nickname, domain)
|
||||
delete_post_str += \
|
||||
individual_post_as_html(signing_priv_key_pem,
|
||||
True, recent_posts_cache, max_recent_posts,
|
||||
|
@ -79,7 +81,7 @@ def html_confirm_delete(css_cache: {},
|
|||
peertube_instances, allow_local_network_access,
|
||||
theme_name, system_language, max_like_count,
|
||||
False, False, False, False, False, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
delete_post_str += '<center>'
|
||||
delete_post_str += \
|
||||
' <p class="followText">' + \
|
||||
|
|
|
@ -17,6 +17,7 @@ from utils import get_config_param
|
|||
from utils import acct_dir
|
||||
from utils import get_currencies
|
||||
from utils import get_category_types
|
||||
from utils import get_account_timezone
|
||||
from webapp_utils import get_banner_file
|
||||
from webapp_utils import html_header_with_external_style
|
||||
from webapp_utils import html_footer
|
||||
|
@ -259,6 +260,8 @@ def html_new_post(css_cache: {}, media_instance: bool, translate: {},
|
|||
'target="_blank">' + \
|
||||
translate['this post'] + '</a></p>\n'
|
||||
if post_json_object:
|
||||
timezone = \
|
||||
get_account_timezone(base_dir, nickname, domain)
|
||||
new_post_text += \
|
||||
individual_post_as_html(signing_priv_key_pem,
|
||||
True, recent_posts_cache,
|
||||
|
@ -282,7 +285,8 @@ def html_new_post(css_cache: {}, media_instance: bool, translate: {},
|
|||
max_like_count,
|
||||
False, False, False,
|
||||
False, False, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled,
|
||||
timezone)
|
||||
|
||||
reply_str = '<input type="hidden" ' + \
|
||||
'name="replyTo" value="' + inReplyTo + '">\n'
|
||||
|
|
|
@ -11,6 +11,7 @@ import os
|
|||
from utils import is_system_account
|
||||
from utils import get_domain_from_actor
|
||||
from utils import get_config_param
|
||||
from utils import get_account_timezone
|
||||
from person import person_box_json
|
||||
from webapp_utils import html_header_with_external_style
|
||||
from webapp_utils import html_footer
|
||||
|
@ -63,6 +64,7 @@ def _html_front_screen_posts(recent_posts_cache: {}, max_recent_posts: int,
|
|||
break
|
||||
for item in outbox_feed['orderedItems']:
|
||||
if item['type'] == 'Create':
|
||||
timezone = get_account_timezone(base_dir, nickname, domain)
|
||||
post_str = \
|
||||
individual_post_as_html(signing_priv_key_pem,
|
||||
True, recent_posts_cache,
|
||||
|
@ -84,7 +86,8 @@ def _html_front_screen_posts(recent_posts_cache: {}, max_recent_posts: int,
|
|||
max_like_count,
|
||||
False, False, False,
|
||||
True, False, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled,
|
||||
timezone)
|
||||
if post_str:
|
||||
profile_str += post_str + separator_str
|
||||
ctr += 1
|
||||
|
|
|
@ -54,7 +54,8 @@ def html_moderation(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the moderation feed as html
|
||||
This is what you see when selecting the "mod" timeline
|
||||
"""
|
||||
|
@ -79,7 +80,8 @@ def html_moderation(css_cache: {}, default_timeline: str,
|
|||
peertube_instances, allow_local_network_access,
|
||||
text_mode_banner, access_keys, system_language,
|
||||
max_like_count, shared_items_federated_domains,
|
||||
signing_priv_key_pem, cw_lists, lists_enabled)
|
||||
signing_priv_key_pem, cw_lists, lists_enabled,
|
||||
timezone)
|
||||
|
||||
|
||||
def html_account_info(css_cache: {}, translate: {},
|
||||
|
|
|
@ -23,6 +23,7 @@ from posts import post_is_muted
|
|||
from posts import get_person_box
|
||||
from posts import download_announce
|
||||
from posts import populate_replies_json
|
||||
from utils import convert_published_to_local_timezone
|
||||
from utils import remove_hash_from_post_id
|
||||
from utils import remove_html
|
||||
from utils import get_actor_languages_list
|
||||
|
@ -841,7 +842,8 @@ def _get_delete_icon_html(nickname: str, domain_full: str,
|
|||
|
||||
|
||||
def _get_published_date_str(post_json_object: {},
|
||||
show_published_date_only: bool) -> str:
|
||||
show_published_date_only: bool,
|
||||
timezone: str) -> str:
|
||||
"""Return the html for the published date on a post
|
||||
"""
|
||||
published_str = ''
|
||||
|
@ -862,6 +864,11 @@ def _get_published_date_str(post_json_object: {},
|
|||
published_str = \
|
||||
published_str.replace('T', ' ').split('.')[0]
|
||||
datetime_object = parse(published_str)
|
||||
|
||||
# convert to local time
|
||||
datetime_object = \
|
||||
convert_published_to_local_timezone(datetime_object, timezone)
|
||||
|
||||
if not show_published_date_only:
|
||||
published_str = datetime_object.strftime("%a %b %d, %H:%M")
|
||||
else:
|
||||
|
@ -1366,7 +1373,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
|||
store_to_cache: bool,
|
||||
use_cache_only: bool,
|
||||
cw_lists: {},
|
||||
lists_enabled: str) -> str:
|
||||
lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
""" Shows a single post as html
|
||||
"""
|
||||
if not post_json_object:
|
||||
|
@ -1803,7 +1811,8 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
|||
bookmark_str, delete_str, mute_str)
|
||||
|
||||
published_str = \
|
||||
_get_published_date_str(post_json_object, show_published_date_only)
|
||||
_get_published_date_str(post_json_object, show_published_date_only,
|
||||
timezone)
|
||||
|
||||
_log_post_timing(enable_timing_log, post_start_time, '15')
|
||||
|
||||
|
@ -2038,7 +2047,8 @@ def html_individual_post(css_cache: {},
|
|||
allow_local_network_access: bool,
|
||||
theme_name: str, system_language: str,
|
||||
max_like_count: int, signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show an individual post as html
|
||||
"""
|
||||
original_post_json = post_json_object
|
||||
|
@ -2104,7 +2114,7 @@ def html_individual_post(css_cache: {},
|
|||
allow_local_network_access, theme_name,
|
||||
system_language, max_like_count,
|
||||
False, authorized, False, False, False, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
message_id = remove_id_ending(post_json_object['id'])
|
||||
|
||||
# show the previous posts
|
||||
|
@ -2139,7 +2149,8 @@ def html_individual_post(css_cache: {},
|
|||
max_like_count,
|
||||
False, authorized,
|
||||
False, False, False, False,
|
||||
cw_lists, lists_enabled) + post_str
|
||||
cw_lists, lists_enabled,
|
||||
timezone) + post_str
|
||||
|
||||
# show the following posts
|
||||
post_filename = locate_post(base_dir, nickname, domain, message_id)
|
||||
|
@ -2176,7 +2187,8 @@ def html_individual_post(css_cache: {},
|
|||
max_like_count,
|
||||
False, authorized,
|
||||
False, False, False, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled,
|
||||
timezone)
|
||||
css_filename = base_dir + '/epicyon-profile.css'
|
||||
if os.path.isfile(base_dir + '/epicyon.css'):
|
||||
css_filename = base_dir + '/epicyon.css'
|
||||
|
@ -2203,7 +2215,8 @@ def html_post_replies(css_cache: {},
|
|||
theme_name: str, system_language: str,
|
||||
max_like_count: int,
|
||||
signing_priv_key_pem: str, cw_lists: {},
|
||||
lists_enabled: str) -> str:
|
||||
lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the replies to an individual post as html
|
||||
"""
|
||||
replies_str = ''
|
||||
|
@ -2228,7 +2241,8 @@ def html_post_replies(css_cache: {},
|
|||
max_like_count,
|
||||
False, False, False, False,
|
||||
False, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled,
|
||||
timezone)
|
||||
|
||||
css_filename = base_dir + '/epicyon-profile.css'
|
||||
if os.path.isfile(base_dir + '/epicyon.css'):
|
||||
|
@ -2257,7 +2271,8 @@ def html_emoji_reaction_picker(css_cache: {},
|
|||
theme_name: str, system_language: str,
|
||||
max_like_count: int, signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
box_name: str, page_number: int) -> str:
|
||||
box_name: str, page_number: int,
|
||||
timezone: str) -> str:
|
||||
"""Returns the emoji picker screen
|
||||
"""
|
||||
reacted_to_post_str = \
|
||||
|
@ -2280,7 +2295,7 @@ def html_emoji_reaction_picker(css_cache: {},
|
|||
theme_name, system_language,
|
||||
max_like_count,
|
||||
False, False, False, False, False, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
reactions_filename = base_dir + '/emoji/reactions.json'
|
||||
if not os.path.isfile(reactions_filename):
|
||||
|
|
|
@ -29,6 +29,7 @@ from utils import acct_dir
|
|||
from utils import get_supported_languages
|
||||
from utils import local_actor_url
|
||||
from utils import get_reply_interval_hours
|
||||
from utils import get_account_timezone
|
||||
from languages import get_actor_languages
|
||||
from skills import get_skills
|
||||
from theme import get_themes_list
|
||||
|
@ -142,7 +143,8 @@ def html_profile_after_search(css_cache: {},
|
|||
system_language: str,
|
||||
max_like_count: int,
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show a profile page after a search for a fediverse address
|
||||
"""
|
||||
http = False
|
||||
|
@ -354,7 +356,8 @@ def html_profile_after_search(css_cache: {},
|
|||
max_like_count,
|
||||
False, False, False,
|
||||
False, False, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled,
|
||||
timezone)
|
||||
i += 1
|
||||
if i >= 8:
|
||||
break
|
||||
|
@ -576,7 +579,8 @@ def html_profile(signing_priv_key_pem: str,
|
|||
extraJson: {}, page_number: int,
|
||||
max_items_per_page: int,
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
content_license_url: str) -> str:
|
||||
content_license_url: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the profile page as html
|
||||
"""
|
||||
nickname = profile_json['preferredUsername']
|
||||
|
@ -986,7 +990,8 @@ def html_profile(signing_priv_key_pem: str,
|
|||
theme, system_language,
|
||||
max_like_count,
|
||||
signing_priv_key_pem,
|
||||
cw_lists, lists_enabled) + license_str
|
||||
cw_lists, lists_enabled,
|
||||
timezone) + license_str
|
||||
if not is_group:
|
||||
if selected == 'following':
|
||||
profile_str += \
|
||||
|
@ -1059,7 +1064,8 @@ def _html_profile_posts(recent_posts_cache: {}, max_recent_posts: int,
|
|||
theme_name: str, system_language: str,
|
||||
max_like_count: int,
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Shows posts on the profile screen
|
||||
These should only be public posts
|
||||
"""
|
||||
|
@ -1107,7 +1113,8 @@ def _html_profile_posts(recent_posts_cache: {}, max_recent_posts: int,
|
|||
max_like_count,
|
||||
False, False, False,
|
||||
True, False, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled,
|
||||
timezone)
|
||||
if post_str:
|
||||
profile_str += post_str + separator_str
|
||||
ctr += 1
|
||||
|
@ -2015,7 +2022,8 @@ def _get_supported_languagesSorted(base_dir: str) -> str:
|
|||
def _html_edit_profile_main(base_dir: str, display_nickname: str, bio_str: str,
|
||||
moved_to: str, donate_url: str, website_url: str,
|
||||
blog_address: str, actor_json: {},
|
||||
translate: {}) -> str:
|
||||
translate: {},
|
||||
nickname: str, domain: str) -> str:
|
||||
"""main info on edit profile screen
|
||||
"""
|
||||
image_formats = get_image_formats()
|
||||
|
@ -2078,6 +2086,11 @@ def _html_edit_profile_main(base_dir: str, display_nickname: str, bio_str: str,
|
|||
edit_text_field(translate['Languages'], 'showLanguages',
|
||||
show_languages, languages_list_str)
|
||||
|
||||
timezone = get_account_timezone(base_dir, nickname, domain)
|
||||
edit_profile_form += \
|
||||
edit_text_field(translate['Time Zone'], 'timeZone',
|
||||
timezone, 'Europe/London')
|
||||
|
||||
edit_profile_form += ' </div>\n'
|
||||
return edit_profile_form
|
||||
|
||||
|
@ -2296,7 +2309,8 @@ def html_edit_profile(css_cache: {}, translate: {}, base_dir: str, path: str,
|
|||
edit_profile_form += \
|
||||
_html_edit_profile_main(base_dir, display_nickname, bio_str,
|
||||
moved_to, donate_url, website_url,
|
||||
blog_address, actor_json, translate)
|
||||
blog_address, actor_json, translate,
|
||||
nickname, domain)
|
||||
|
||||
# Option checkboxes
|
||||
edit_profile_form += \
|
||||
|
|
|
@ -610,7 +610,8 @@ def html_history_search(css_cache: {}, translate: {}, base_dir: str,
|
|||
max_like_count: int,
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {},
|
||||
lists_enabled: str) -> str:
|
||||
lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show a page containing search results for your post history
|
||||
"""
|
||||
if historysearch.startswith("'"):
|
||||
|
@ -697,7 +698,8 @@ def html_history_search(css_cache: {}, translate: {}, base_dir: str,
|
|||
show_individual_post_icons,
|
||||
show_individual_post_icons,
|
||||
False, False, False, False,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled,
|
||||
timezone)
|
||||
if post_str:
|
||||
history_search_form += separator_str + post_str
|
||||
index += 1
|
||||
|
@ -722,7 +724,8 @@ def html_hashtag_search(css_cache: {},
|
|||
theme_name: str, system_language: str,
|
||||
max_like_count: int,
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show a page containing search results for a hashtag
|
||||
or after selecting a hashtag from the swarm
|
||||
"""
|
||||
|
@ -882,7 +885,7 @@ def html_hashtag_search(css_cache: {},
|
|||
manually_approves_followers,
|
||||
show_public_only,
|
||||
store_to_sache, False, cw_lists,
|
||||
lists_enabled)
|
||||
lists_enabled, timezone)
|
||||
if post_str:
|
||||
hashtag_search_form += separator_str + post_str
|
||||
index += 1
|
||||
|
|
|
@ -454,7 +454,8 @@ def html_timeline(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the timeline as html
|
||||
"""
|
||||
enable_timing_log = False
|
||||
|
@ -930,7 +931,8 @@ def html_timeline(css_cache: {}, default_timeline: str,
|
|||
show_individual_post_icons,
|
||||
manually_approve_followers,
|
||||
False, True, use_cache_only,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled,
|
||||
timezone)
|
||||
_log_timeline_timing(enable_timing_log,
|
||||
timeline_start_time, box_name, '12')
|
||||
|
||||
|
@ -1158,7 +1160,8 @@ def html_shares(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the shares timeline as html
|
||||
"""
|
||||
manually_approve_followers = \
|
||||
|
@ -1188,7 +1191,7 @@ def html_shares(css_cache: {}, default_timeline: str,
|
|||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains,
|
||||
signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def html_wanted(css_cache: {}, default_timeline: str,
|
||||
|
@ -1216,7 +1219,8 @@ def html_wanted(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the wanted timeline as html
|
||||
"""
|
||||
manually_approve_followers = \
|
||||
|
@ -1246,7 +1250,7 @@ def html_wanted(css_cache: {}, default_timeline: str,
|
|||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains,
|
||||
signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def html_inbox(css_cache: {}, default_timeline: str,
|
||||
|
@ -1275,7 +1279,8 @@ def html_inbox(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the inbox as html
|
||||
"""
|
||||
manually_approve_followers = \
|
||||
|
@ -1305,7 +1310,7 @@ def html_inbox(css_cache: {}, default_timeline: str,
|
|||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains,
|
||||
signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def html_bookmarks(css_cache: {}, default_timeline: str,
|
||||
|
@ -1334,7 +1339,8 @@ def html_bookmarks(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the bookmarks as html
|
||||
"""
|
||||
manually_approve_followers = \
|
||||
|
@ -1363,7 +1369,7 @@ def html_bookmarks(css_cache: {}, default_timeline: str,
|
|||
allow_local_network_access, text_mode_banner,
|
||||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains, signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def html_inbox_dms(css_cache: {}, default_timeline: str,
|
||||
|
@ -1392,7 +1398,8 @@ def html_inbox_dms(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the DM timeline as html
|
||||
"""
|
||||
artist = is_artist(base_dir, nickname)
|
||||
|
@ -1417,7 +1424,7 @@ def html_inbox_dms(css_cache: {}, default_timeline: str,
|
|||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains,
|
||||
signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def html_inbox_replies(css_cache: {}, default_timeline: str,
|
||||
|
@ -1446,7 +1453,8 @@ def html_inbox_replies(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the replies timeline as html
|
||||
"""
|
||||
artist = is_artist(base_dir, nickname)
|
||||
|
@ -1470,7 +1478,7 @@ def html_inbox_replies(css_cache: {}, default_timeline: str,
|
|||
allow_local_network_access, text_mode_banner,
|
||||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains, signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def html_inbox_media(css_cache: {}, default_timeline: str,
|
||||
|
@ -1499,7 +1507,8 @@ def html_inbox_media(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the media timeline as html
|
||||
"""
|
||||
artist = is_artist(base_dir, nickname)
|
||||
|
@ -1523,7 +1532,7 @@ def html_inbox_media(css_cache: {}, default_timeline: str,
|
|||
allow_local_network_access, text_mode_banner,
|
||||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains, signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def html_inbox_blogs(css_cache: {}, default_timeline: str,
|
||||
|
@ -1552,7 +1561,8 @@ def html_inbox_blogs(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the blogs timeline as html
|
||||
"""
|
||||
artist = is_artist(base_dir, nickname)
|
||||
|
@ -1576,7 +1586,7 @@ def html_inbox_blogs(css_cache: {}, default_timeline: str,
|
|||
allow_local_network_access, text_mode_banner,
|
||||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains, signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def html_inbox_features(css_cache: {}, default_timeline: str,
|
||||
|
@ -1606,7 +1616,8 @@ def html_inbox_features(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the features timeline as html
|
||||
"""
|
||||
return html_timeline(css_cache, default_timeline,
|
||||
|
@ -1629,7 +1640,7 @@ def html_inbox_features(css_cache: {}, default_timeline: str,
|
|||
allow_local_network_access, text_mode_banner,
|
||||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains, signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def html_inbox_news(css_cache: {}, default_timeline: str,
|
||||
|
@ -1658,7 +1669,8 @@ def html_inbox_news(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the news timeline as html
|
||||
"""
|
||||
return html_timeline(css_cache, default_timeline,
|
||||
|
@ -1681,7 +1693,7 @@ def html_inbox_news(css_cache: {}, default_timeline: str,
|
|||
allow_local_network_access, text_mode_banner,
|
||||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains, signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
||||
|
||||
def html_outbox(css_cache: {}, default_timeline: str,
|
||||
|
@ -1710,7 +1722,8 @@ def html_outbox(css_cache: {}, default_timeline: str,
|
|||
max_like_count: int,
|
||||
shared_items_federated_domains: [],
|
||||
signing_priv_key_pem: str,
|
||||
cw_lists: {}, lists_enabled: str) -> str:
|
||||
cw_lists: {}, lists_enabled: str,
|
||||
timezone: str) -> str:
|
||||
"""Show the Outbox as html
|
||||
"""
|
||||
manually_approve_followers = \
|
||||
|
@ -1736,4 +1749,4 @@ def html_outbox(css_cache: {}, default_timeline: str,
|
|||
allow_local_network_access, text_mode_banner,
|
||||
access_keys, system_language, max_like_count,
|
||||
shared_items_federated_domains, signing_priv_key_pem,
|
||||
cw_lists, lists_enabled)
|
||||
cw_lists, lists_enabled, timezone)
|
||||
|
|
Loading…
Reference in New Issue