mirror of https://gitlab.com/bashrc2/epicyon
Move post function to posts module
parent
530158ff6a
commit
19a374516d
56
inbox.py
56
inbox.py
|
@ -120,6 +120,7 @@ from utils import is_reply
|
||||||
from utils import has_actor
|
from utils import has_actor
|
||||||
from utils import valid_content_warning
|
from utils import valid_content_warning
|
||||||
from httpsig import message_content_digest
|
from httpsig import message_content_digest
|
||||||
|
from posts import json_post_allows_comments
|
||||||
from posts import outbox_message_create_wrap
|
from posts import outbox_message_create_wrap
|
||||||
from posts import convert_post_content_to_html
|
from posts import convert_post_content_to_html
|
||||||
from posts import edited_post_filename
|
from posts import edited_post_filename
|
||||||
|
@ -3312,61 +3313,6 @@ def _receive_undo_announce(recent_posts_cache: {},
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def json_post_allows_comments(post_json_object: {}) -> bool:
|
|
||||||
"""Returns true if the given post allows comments/replies
|
|
||||||
"""
|
|
||||||
# reply control with
|
|
||||||
# https://codeberg.org/fediverse/fep/src/branch/main/fep/5624/fep-5624.md
|
|
||||||
reply_control = None
|
|
||||||
if 'canReply' in post_json_object:
|
|
||||||
reply_control = post_json_object['canReply']
|
|
||||||
if 'capabilities' in post_json_object:
|
|
||||||
if isinstance(post_json_object['capabilities'], dict):
|
|
||||||
if 'reply' in post_json_object['capabilities']:
|
|
||||||
if isinstance(post_json_object['capabilities']['reply'], str):
|
|
||||||
reply_control = post_json_object['capabilities']['reply']
|
|
||||||
else:
|
|
||||||
# capabilities exist but there is no reply field
|
|
||||||
reply_control = 'noreply'
|
|
||||||
obj_dict_exists = False
|
|
||||||
if has_object_dict(post_json_object):
|
|
||||||
obj_dict_exists = True
|
|
||||||
post_obj = post_json_object['object']
|
|
||||||
if 'canReply' in post_obj:
|
|
||||||
reply_control = post_obj['canReply']
|
|
||||||
if 'capabilities' in post_obj:
|
|
||||||
if isinstance(post_obj['capabilities'], dict):
|
|
||||||
if 'reply' in post_obj['capabilities']:
|
|
||||||
if isinstance(post_obj['capabilities']['reply'], str):
|
|
||||||
reply_control = post_obj['capabilities']['reply']
|
|
||||||
else:
|
|
||||||
# capabilities exist but there is no reply field
|
|
||||||
reply_control = 'noreply'
|
|
||||||
if reply_control:
|
|
||||||
if isinstance(reply_control, str):
|
|
||||||
if reply_control == 'noreply':
|
|
||||||
return False
|
|
||||||
if not reply_control.endswith('#Public'):
|
|
||||||
# TODO handle non-public reply permissions
|
|
||||||
print('CAPABILITIES: replies ' + str(reply_control))
|
|
||||||
return False
|
|
||||||
|
|
||||||
if 'commentsEnabled' in post_json_object:
|
|
||||||
return post_json_object['commentsEnabled']
|
|
||||||
if 'rejectReplies' in post_json_object:
|
|
||||||
return not post_json_object['rejectReplies']
|
|
||||||
|
|
||||||
if post_json_object.get('object'):
|
|
||||||
if not obj_dict_exists:
|
|
||||||
return False
|
|
||||||
if 'commentsEnabled' in post_json_object['object']:
|
|
||||||
return post_json_object['object']['commentsEnabled']
|
|
||||||
if 'rejectReplies' in post_json_object['object']:
|
|
||||||
return not post_json_object['object']['rejectReplies']
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
def _post_allow_comments(post_filename: str) -> bool:
|
def _post_allow_comments(post_filename: str) -> bool:
|
||||||
"""Returns true if the given post allows comments/replies
|
"""Returns true if the given post allows comments/replies
|
||||||
"""
|
"""
|
||||||
|
|
55
posts.py
55
posts.py
|
@ -6985,3 +6985,58 @@ def set_max_profile_posts(base_dir: str, nickname: str, domain: str,
|
||||||
max_posts_filename)
|
max_posts_filename)
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def json_post_allows_comments(post_json_object: {}) -> bool:
|
||||||
|
"""Returns true if the given post allows comments/replies
|
||||||
|
"""
|
||||||
|
# reply control with
|
||||||
|
# https://codeberg.org/fediverse/fep/src/branch/main/fep/5624/fep-5624.md
|
||||||
|
reply_control = None
|
||||||
|
if 'canReply' in post_json_object:
|
||||||
|
reply_control = post_json_object['canReply']
|
||||||
|
if 'capabilities' in post_json_object:
|
||||||
|
if isinstance(post_json_object['capabilities'], dict):
|
||||||
|
if 'reply' in post_json_object['capabilities']:
|
||||||
|
if isinstance(post_json_object['capabilities']['reply'], str):
|
||||||
|
reply_control = post_json_object['capabilities']['reply']
|
||||||
|
else:
|
||||||
|
# capabilities exist but there is no reply field
|
||||||
|
reply_control = 'noreply'
|
||||||
|
obj_dict_exists = False
|
||||||
|
if has_object_dict(post_json_object):
|
||||||
|
obj_dict_exists = True
|
||||||
|
post_obj = post_json_object['object']
|
||||||
|
if 'canReply' in post_obj:
|
||||||
|
reply_control = post_obj['canReply']
|
||||||
|
if 'capabilities' in post_obj:
|
||||||
|
if isinstance(post_obj['capabilities'], dict):
|
||||||
|
if 'reply' in post_obj['capabilities']:
|
||||||
|
if isinstance(post_obj['capabilities']['reply'], str):
|
||||||
|
reply_control = post_obj['capabilities']['reply']
|
||||||
|
else:
|
||||||
|
# capabilities exist but there is no reply field
|
||||||
|
reply_control = 'noreply'
|
||||||
|
if reply_control:
|
||||||
|
if isinstance(reply_control, str):
|
||||||
|
if reply_control == 'noreply':
|
||||||
|
return False
|
||||||
|
if not reply_control.endswith('#Public'):
|
||||||
|
# TODO handle non-public reply permissions
|
||||||
|
print('CAPABILITIES: replies ' + str(reply_control))
|
||||||
|
return False
|
||||||
|
|
||||||
|
if 'commentsEnabled' in post_json_object:
|
||||||
|
return post_json_object['commentsEnabled']
|
||||||
|
if 'rejectReplies' in post_json_object:
|
||||||
|
return not post_json_object['rejectReplies']
|
||||||
|
|
||||||
|
if post_json_object.get('object'):
|
||||||
|
if not obj_dict_exists:
|
||||||
|
return False
|
||||||
|
if 'commentsEnabled' in post_json_object['object']:
|
||||||
|
return post_json_object['object']['commentsEnabled']
|
||||||
|
if 'rejectReplies' in post_json_object['object']:
|
||||||
|
return not post_json_object['object']['rejectReplies']
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
2
tests.py
2
tests.py
|
@ -38,6 +38,7 @@ from daemon import run_daemon
|
||||||
from session import get_json_valid
|
from session import get_json_valid
|
||||||
from session import create_session
|
from session import create_session
|
||||||
from session import get_json
|
from session import get_json
|
||||||
|
from posts import json_post_allows_comments
|
||||||
from posts import convert_post_content_to_html
|
from posts import convert_post_content_to_html
|
||||||
from posts import get_actor_from_in_reply_to
|
from posts import get_actor_from_in_reply_to
|
||||||
from posts import regenerate_index_for_box
|
from posts import regenerate_index_for_box
|
||||||
|
@ -147,7 +148,6 @@ from media import get_image_dimensions
|
||||||
from media import get_media_path
|
from media import get_media_path
|
||||||
from media import get_attachment_media_type
|
from media import get_attachment_media_type
|
||||||
from delete import send_delete_via_server
|
from delete import send_delete_via_server
|
||||||
from inbox import json_post_allows_comments
|
|
||||||
from inbox import valid_inbox
|
from inbox import valid_inbox
|
||||||
from inbox import valid_inbox_filenames
|
from inbox import valid_inbox_filenames
|
||||||
from categories import guess_hashtag_category
|
from categories import guess_hashtag_category
|
||||||
|
|
Loading…
Reference in New Issue