Update memoral actor flags when file is changed

merge-requests/30/head
Bob Mottram 2023-09-01 10:22:38 +01:00
parent 628740afd9
commit a1a44e1804
2 changed files with 47 additions and 0 deletions

View File

@ -63,6 +63,7 @@ from donate import get_website
from donate import set_website
from donate import get_gemini_link
from donate import set_gemini_link
from person import update_memorial_flags
from person import get_featured_hashtags
from person import set_featured_hashtags
from person import clear_person_qrcodes
@ -6906,10 +6907,14 @@ class PubServer(BaseHTTPRequestHandler):
curr_memorial:
set_memorials(base_dir, self.server.domain,
fields['memorialAccounts'])
update_memorial_flags(base_dir,
self.server.person_cache)
else:
if curr_memorial:
set_memorials(base_dir,
self.server.domain, '')
update_memorial_flags(base_dir,
self.server.person_cache)
# change email address
current_email_address = get_email_address(actor_json)
@ -24543,6 +24548,8 @@ def run_daemon(max_shares_on_profile: int,
begin_thread(httpd.thrFederatedSharesDaemon,
'run_daemon start federated shares')
update_memorial_flags(base_dir, httpd.person_cache)
if client_to_server:
print('Running ActivityPub client on ' +
domain + ' port ' + str(proxy_port))

View File

@ -38,6 +38,8 @@ from roles import set_role
from roles import actor_roles_from_list
from roles import get_actor_roles_list
from media import process_meta_data
from utils import get_memorials
from utils import is_account_dir
from utils import valid_hash_tag
from utils import acct_handle_dir
from utils import safe_system_string
@ -75,6 +77,7 @@ from webfinger import webfinger_handle
from pprint import pprint
from cache import get_person_from_cache
from cache import store_person_in_cache
from cache import remove_person_from_cache
from filters import is_filtered_bio
from follow import is_following_actor
@ -2107,3 +2110,40 @@ def set_featured_hashtags(actor_json: {}, hashtags: str,
actor_json['tag'] = result
else:
actor_json['tag'] += result
def update_memorial_flags(base_dir: str, person_cache: {}) -> None:
"""Sets or clears the memorial flags based upon the content of
accounts/memorial file
"""
memorials = get_memorials(base_dir).split('\n')
for _, dirs, _ in os.walk(base_dir + '/accounts'):
for account in dirs:
if not is_account_dir(account):
continue
actor_filename = base_dir + '/accounts/' + account + '.json'
if not os.path.isfile(actor_filename):
continue
actor_json = load_json(actor_filename)
if not actor_json:
continue
if not actor_json.get('id'):
continue
nickname = account.split('@')[0]
actor_changed = False
if not actor_json.get('memorial'):
if nickname in memorials:
actor_json['memorial'] = True
actor_changed = True
else:
if nickname not in memorials:
actor_json['memorial'] = False
actor_changed = True
if actor_changed:
save_json(actor_json, actor_filename)
actor = actor_json['id']
remove_person_from_cache(base_dir, actor, person_cache)
store_person_in_cache(base_dir, actor, actor_json,
person_cache, True)
break