mirror of https://gitlab.com/bashrc2/epicyon
Move announce function
parent
ef38b4a33f
commit
8f12dbbf02
82
announce.py
82
announce.py
|
@ -30,7 +30,6 @@ from utils import get_nickname_from_actor
|
||||||
from utils import get_domain_from_actor
|
from utils import get_domain_from_actor
|
||||||
from utils import locate_post
|
from utils import locate_post
|
||||||
from utils import save_json
|
from utils import save_json
|
||||||
from utils import update_announce_collection
|
|
||||||
from utils import local_actor_url
|
from utils import local_actor_url
|
||||||
from utils import replace_users_with_at
|
from utils import replace_users_with_at
|
||||||
from utils import has_actor
|
from utils import has_actor
|
||||||
|
@ -631,3 +630,84 @@ def undo_announce_collection_entry(recent_posts_cache: {},
|
||||||
post_json_object['object']['shares']['totalItems'] = itlen
|
post_json_object['object']['shares']['totalItems'] = itlen
|
||||||
|
|
||||||
save_json(post_json_object, post_filename)
|
save_json(post_json_object, post_filename)
|
||||||
|
|
||||||
|
|
||||||
|
def update_announce_collection(recent_posts_cache: {},
|
||||||
|
base_dir: str, post_filename: str,
|
||||||
|
actor: str, nickname: str, domain: str,
|
||||||
|
debug: bool) -> None:
|
||||||
|
"""Updates the announcements collection within a post
|
||||||
|
Confusingly this is known as "shares", but isn't the
|
||||||
|
same as shared items within shares.py
|
||||||
|
It's shares of posts, not shares of physical objects.
|
||||||
|
"""
|
||||||
|
post_json_object = load_json(post_filename)
|
||||||
|
if not post_json_object:
|
||||||
|
return
|
||||||
|
# remove any cached version of this announce so that the announce
|
||||||
|
# icon is changed
|
||||||
|
cached_post_filename = \
|
||||||
|
get_cached_post_filename(base_dir, nickname, domain,
|
||||||
|
post_json_object)
|
||||||
|
if cached_post_filename:
|
||||||
|
if os.path.isfile(cached_post_filename):
|
||||||
|
print('update_announce_collection: removing ' +
|
||||||
|
cached_post_filename)
|
||||||
|
try:
|
||||||
|
os.remove(cached_post_filename)
|
||||||
|
except OSError:
|
||||||
|
if debug:
|
||||||
|
print('EX: update_announce_collection ' +
|
||||||
|
'unable to delete cached post ' +
|
||||||
|
str(cached_post_filename))
|
||||||
|
remove_post_from_cache(post_json_object, recent_posts_cache)
|
||||||
|
|
||||||
|
if not has_object_dict(post_json_object):
|
||||||
|
if debug:
|
||||||
|
pprint(post_json_object)
|
||||||
|
print('DEBUG: post ' + post_filename + ' has no object')
|
||||||
|
return
|
||||||
|
post_url = remove_id_ending(post_json_object['id'])
|
||||||
|
collection_id = post_url + '/shares'
|
||||||
|
if not post_json_object['object'].get('shares'):
|
||||||
|
if debug:
|
||||||
|
print('DEBUG: Adding initial shares (announcements) to ' +
|
||||||
|
post_url)
|
||||||
|
announcements_json = {
|
||||||
|
"@context": [
|
||||||
|
'https://www.w3.org/ns/activitystreams',
|
||||||
|
'https://w3id.org/security/v1'
|
||||||
|
],
|
||||||
|
'id': collection_id,
|
||||||
|
'sharesOf': post_url,
|
||||||
|
'type': 'Collection',
|
||||||
|
"totalItems": 1,
|
||||||
|
'items': [{
|
||||||
|
'type': 'Announce',
|
||||||
|
'actor': actor
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
post_json_object['object']['shares'] = announcements_json
|
||||||
|
else:
|
||||||
|
if post_json_object['object']['shares'].get('items'):
|
||||||
|
shares_items = post_json_object['object']['shares']['items']
|
||||||
|
for announce_item in shares_items:
|
||||||
|
if announce_item.get('actor'):
|
||||||
|
if announce_item['actor'] == actor:
|
||||||
|
return
|
||||||
|
new_announce = {
|
||||||
|
'type': 'Announce',
|
||||||
|
'actor': actor
|
||||||
|
}
|
||||||
|
post_json_object['object']['shares']['items'].append(new_announce)
|
||||||
|
itlen = len(post_json_object['object']['shares']['items'])
|
||||||
|
post_json_object['object']['shares']['totalItems'] = itlen
|
||||||
|
else:
|
||||||
|
if debug:
|
||||||
|
print('DEBUG: shares (announcements) section of post ' +
|
||||||
|
'has no items list')
|
||||||
|
|
||||||
|
if debug:
|
||||||
|
print('DEBUG: saving post with shares (announcements) added')
|
||||||
|
pprint(post_json_object)
|
||||||
|
save_json(post_json_object, post_filename)
|
||||||
|
|
|
@ -18,7 +18,6 @@ from utils import get_actor_from_post_id
|
||||||
from utils import contains_invalid_actor_url_chars
|
from utils import contains_invalid_actor_url_chars
|
||||||
from utils import get_attributed_to
|
from utils import get_attributed_to
|
||||||
from utils import remove_eol
|
from utils import remove_eol
|
||||||
from utils import update_announce_collection
|
|
||||||
from utils import get_protocol_prefixes
|
from utils import get_protocol_prefixes
|
||||||
from utils import contains_statuses
|
from utils import contains_statuses
|
||||||
from utils import delete_post
|
from utils import delete_post
|
||||||
|
@ -76,6 +75,7 @@ from like import update_likes_collection
|
||||||
from reaction import valid_emoji_content
|
from reaction import valid_emoji_content
|
||||||
from reaction import update_reaction_collection
|
from reaction import update_reaction_collection
|
||||||
from bookmarks import update_bookmarks_collection
|
from bookmarks import update_bookmarks_collection
|
||||||
|
from announce import update_announce_collection
|
||||||
from announce import is_self_announce
|
from announce import is_self_announce
|
||||||
from speaker import update_speaker
|
from speaker import update_speaker
|
||||||
from webapp_post import individual_post_as_html
|
from webapp_post import individual_post_as_html
|
||||||
|
|
82
utils.py
82
utils.py
|
@ -16,7 +16,6 @@ import shutil
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
import locale
|
import locale
|
||||||
from pprint import pprint
|
|
||||||
import idna
|
import idna
|
||||||
from cryptography.hazmat.backends import default_backend
|
from cryptography.hazmat.backends import default_backend
|
||||||
from cryptography.hazmat.primitives import hashes
|
from cryptography.hazmat.primitives import hashes
|
||||||
|
@ -2607,87 +2606,6 @@ def get_file_case_insensitive(path: str) -> str:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def update_announce_collection(recent_posts_cache: {},
|
|
||||||
base_dir: str, post_filename: str,
|
|
||||||
actor: str, nickname: str, domain: str,
|
|
||||||
debug: bool) -> None:
|
|
||||||
"""Updates the announcements collection within a post
|
|
||||||
Confusingly this is known as "shares", but isn't the
|
|
||||||
same as shared items within shares.py
|
|
||||||
It's shares of posts, not shares of physical objects.
|
|
||||||
"""
|
|
||||||
post_json_object = load_json(post_filename)
|
|
||||||
if not post_json_object:
|
|
||||||
return
|
|
||||||
# remove any cached version of this announce so that the announce
|
|
||||||
# icon is changed
|
|
||||||
cached_post_filename = \
|
|
||||||
get_cached_post_filename(base_dir, nickname, domain,
|
|
||||||
post_json_object)
|
|
||||||
if cached_post_filename:
|
|
||||||
if os.path.isfile(cached_post_filename):
|
|
||||||
print('update_announce_collection: removing ' +
|
|
||||||
cached_post_filename)
|
|
||||||
try:
|
|
||||||
os.remove(cached_post_filename)
|
|
||||||
except OSError:
|
|
||||||
if debug:
|
|
||||||
print('EX: update_announce_collection ' +
|
|
||||||
'unable to delete cached post ' +
|
|
||||||
str(cached_post_filename))
|
|
||||||
remove_post_from_cache(post_json_object, recent_posts_cache)
|
|
||||||
|
|
||||||
if not has_object_dict(post_json_object):
|
|
||||||
if debug:
|
|
||||||
pprint(post_json_object)
|
|
||||||
print('DEBUG: post ' + post_filename + ' has no object')
|
|
||||||
return
|
|
||||||
post_url = remove_id_ending(post_json_object['id'])
|
|
||||||
collection_id = post_url + '/shares'
|
|
||||||
if not post_json_object['object'].get('shares'):
|
|
||||||
if debug:
|
|
||||||
print('DEBUG: Adding initial shares (announcements) to ' +
|
|
||||||
post_url)
|
|
||||||
announcements_json = {
|
|
||||||
"@context": [
|
|
||||||
'https://www.w3.org/ns/activitystreams',
|
|
||||||
'https://w3id.org/security/v1'
|
|
||||||
],
|
|
||||||
'id': collection_id,
|
|
||||||
'sharesOf': post_url,
|
|
||||||
'type': 'Collection',
|
|
||||||
"totalItems": 1,
|
|
||||||
'items': [{
|
|
||||||
'type': 'Announce',
|
|
||||||
'actor': actor
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
post_json_object['object']['shares'] = announcements_json
|
|
||||||
else:
|
|
||||||
if post_json_object['object']['shares'].get('items'):
|
|
||||||
shares_items = post_json_object['object']['shares']['items']
|
|
||||||
for announce_item in shares_items:
|
|
||||||
if announce_item.get('actor'):
|
|
||||||
if announce_item['actor'] == actor:
|
|
||||||
return
|
|
||||||
new_announce = {
|
|
||||||
'type': 'Announce',
|
|
||||||
'actor': actor
|
|
||||||
}
|
|
||||||
post_json_object['object']['shares']['items'].append(new_announce)
|
|
||||||
itlen = len(post_json_object['object']['shares']['items'])
|
|
||||||
post_json_object['object']['shares']['totalItems'] = itlen
|
|
||||||
else:
|
|
||||||
if debug:
|
|
||||||
print('DEBUG: shares (announcements) section of post ' +
|
|
||||||
'has no items list')
|
|
||||||
|
|
||||||
if debug:
|
|
||||||
print('DEBUG: saving post with shares (announcements) added')
|
|
||||||
pprint(post_json_object)
|
|
||||||
save_json(post_json_object, post_filename)
|
|
||||||
|
|
||||||
|
|
||||||
def media_file_mime_type(filename: str) -> str:
|
def media_file_mime_type(filename: str) -> str:
|
||||||
"""Given a media filename return its mime type
|
"""Given a media filename return its mime type
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -17,6 +17,7 @@ from cache import get_person_from_cache
|
||||||
from cache import update_recent_posts_cache
|
from cache import update_recent_posts_cache
|
||||||
from bookmarks import bookmark_from_id
|
from bookmarks import bookmark_from_id
|
||||||
from bookmarks import bookmarked_by_person
|
from bookmarks import bookmarked_by_person
|
||||||
|
from announce import update_announce_collection
|
||||||
from announce import announced_by_person
|
from announce import announced_by_person
|
||||||
from announce import no_of_announces
|
from announce import no_of_announces
|
||||||
from like import liked_by_person
|
from like import liked_by_person
|
||||||
|
@ -38,6 +39,8 @@ from flags import is_chat_message
|
||||||
from flags import is_pgp_encrypted
|
from flags import is_pgp_encrypted
|
||||||
from textmode import text_mode_removals
|
from textmode import text_mode_removals
|
||||||
from quote import get_quote_toot_url
|
from quote import get_quote_toot_url
|
||||||
|
from timeFunctions import date_from_string_format
|
||||||
|
from timeFunctions import convert_published_to_local_timezone
|
||||||
from utils import save_json
|
from utils import save_json
|
||||||
from utils import remove_header_tags
|
from utils import remove_header_tags
|
||||||
from utils import get_actor_from_post_id
|
from utils import get_actor_from_post_id
|
||||||
|
@ -53,8 +56,6 @@ from utils import dont_speak_hashtags
|
||||||
from utils import remove_eol
|
from utils import remove_eol
|
||||||
from utils import disallow_announce
|
from utils import disallow_announce
|
||||||
from utils import disallow_reply
|
from utils import disallow_reply
|
||||||
from timeFunctions import date_from_string_format
|
|
||||||
from timeFunctions import convert_published_to_local_timezone
|
|
||||||
from utils import remove_hash_from_post_id
|
from utils import remove_hash_from_post_id
|
||||||
from utils import remove_html
|
from utils import remove_html
|
||||||
from utils import get_actor_languages_list
|
from utils import get_actor_languages_list
|
||||||
|
@ -63,7 +64,6 @@ from utils import get_content_from_post
|
||||||
from utils import get_language_from_post
|
from utils import get_language_from_post
|
||||||
from utils import get_summary_from_post
|
from utils import get_summary_from_post
|
||||||
from utils import has_object_dict
|
from utils import has_object_dict
|
||||||
from utils import update_announce_collection
|
|
||||||
from utils import is_dm
|
from utils import is_dm
|
||||||
from utils import reject_post_id
|
from utils import reject_post_id
|
||||||
from utils import get_config_param
|
from utils import get_config_param
|
||||||
|
|
Loading…
Reference in New Issue