mirror of
https://codeberg.org/rimu/pyfedi
synced 2025-01-23 19:36:56 -08:00
Share functionality between post_to_activity and post_to_page
This commit is contained in:
parent
6dc7ac9728
commit
7db33a084a
2 changed files with 8 additions and 57 deletions
|
@ -1476,8 +1476,7 @@ def post_ap2(post_id):
|
||||||
def post_ap(post_id):
|
def post_ap(post_id):
|
||||||
if request.method == 'GET' and is_activitypub_request():
|
if request.method == 'GET' and is_activitypub_request():
|
||||||
post = Post.query.get_or_404(post_id)
|
post = Post.query.get_or_404(post_id)
|
||||||
post_data = post_to_activity(post, post.community)
|
post_data = post_to_page(post)
|
||||||
post_data = post_data['object']['object']
|
|
||||||
post_data['@context'] = default_context()
|
post_data['@context'] = default_context()
|
||||||
resp = jsonify(post_data)
|
resp = jsonify(post_data)
|
||||||
resp.content_type = 'application/activity+json'
|
resp.content_type = 'application/activity+json'
|
||||||
|
|
|
@ -137,31 +137,7 @@ def post_to_activity(post: Post, community: Community):
|
||||||
"to": [
|
"to": [
|
||||||
"https://www.w3.org/ns/activitystreams#Public"
|
"https://www.w3.org/ns/activitystreams#Public"
|
||||||
],
|
],
|
||||||
"object": {
|
"object": post_to_page(post),
|
||||||
"type": "Page",
|
|
||||||
"id": post.ap_id,
|
|
||||||
"attributedTo": post.author.public_url(),
|
|
||||||
"to": [
|
|
||||||
community.public_url(),
|
|
||||||
"https://www.w3.org/ns/activitystreams#Public"
|
|
||||||
],
|
|
||||||
"name": post.title,
|
|
||||||
"cc": [],
|
|
||||||
"content": post.body_html if post.body_html else '',
|
|
||||||
"mediaType": "text/html",
|
|
||||||
"attachment": [],
|
|
||||||
"commentsEnabled": post.comments_enabled,
|
|
||||||
"sensitive": post.nsfw or post.nsfl,
|
|
||||||
"published": ap_datetime(post.created_at),
|
|
||||||
"stickied": post.sticky,
|
|
||||||
"audience": community.public_url(),
|
|
||||||
'language': {
|
|
||||||
'identifier': post.language_code(),
|
|
||||||
'name': post.language_name()
|
|
||||||
},
|
|
||||||
'tag': post.tags_for_activitypub(),
|
|
||||||
'replies': post_replies_for_ap(post.id)
|
|
||||||
},
|
|
||||||
"cc": [
|
"cc": [
|
||||||
community.public_url()
|
community.public_url()
|
||||||
],
|
],
|
||||||
|
@ -174,31 +150,6 @@ def post_to_activity(post: Post, community: Community):
|
||||||
"type": "Announce",
|
"type": "Announce",
|
||||||
"id": announce_id
|
"id": announce_id
|
||||||
}
|
}
|
||||||
if post.edited_at is not None:
|
|
||||||
activity_data["object"]["object"]["updated"] = ap_datetime(post.edited_at)
|
|
||||||
if (post.type == POST_TYPE_LINK or post.type == POST_TYPE_VIDEO) and post.url is not None:
|
|
||||||
activity_data["object"]["object"]["attachment"] = [{"href": post.url, "type": "Link"}]
|
|
||||||
if post.image_id is not None:
|
|
||||||
activity_data["object"]["object"]["image"] = {"url": post.image.view_url(), "type": "Image"}
|
|
||||||
if post.image.alt_text:
|
|
||||||
activity_data["object"]["object"]["image"]['name'] = post.image.alt_text
|
|
||||||
if post.type == POST_TYPE_POLL:
|
|
||||||
poll = Poll.query.filter_by(post_id=post.id).first()
|
|
||||||
activity_data["object"]["object"]['type'] = 'Question'
|
|
||||||
mode = 'oneOf' if poll.mode == 'single' else 'anyOf'
|
|
||||||
choices = []
|
|
||||||
for choice in PollChoice.query.filter_by(post_id=post.id).order_by(PollChoice.sort_order).all():
|
|
||||||
choices.append({
|
|
||||||
"type": "Note",
|
|
||||||
"name": choice.choice_text,
|
|
||||||
"replies": {
|
|
||||||
"type": "Collection",
|
|
||||||
"totalItems": choice.num_votes
|
|
||||||
}
|
|
||||||
})
|
|
||||||
activity_data["object"]["object"][mode] = choices
|
|
||||||
activity_data["object"]["object"]['endTime'] = ap_datetime(poll.end_poll)
|
|
||||||
activity_data["object"]["object"]['votersCount'] = poll.total_votes()
|
|
||||||
|
|
||||||
return activity_data
|
return activity_data
|
||||||
|
|
||||||
|
@ -209,7 +160,7 @@ def post_to_page(post: Post):
|
||||||
"id": post.ap_id,
|
"id": post.ap_id,
|
||||||
"attributedTo": post.author.ap_public_url,
|
"attributedTo": post.author.ap_public_url,
|
||||||
"to": [
|
"to": [
|
||||||
f"https://{current_app.config['SERVER_NAME']}/c/{post.community.name}",
|
post.community.public_url(),
|
||||||
"https://www.w3.org/ns/activitystreams#Public"
|
"https://www.w3.org/ns/activitystreams#Public"
|
||||||
],
|
],
|
||||||
"name": post.title,
|
"name": post.title,
|
||||||
|
@ -221,11 +172,12 @@ def post_to_page(post: Post):
|
||||||
"sensitive": post.nsfw or post.nsfl,
|
"sensitive": post.nsfw or post.nsfl,
|
||||||
"published": ap_datetime(post.created_at),
|
"published": ap_datetime(post.created_at),
|
||||||
"stickied": post.sticky,
|
"stickied": post.sticky,
|
||||||
"audience": f"https://{current_app.config['SERVER_NAME']}/c/{post.community.name}",
|
"audience": post.community.public_url(),
|
||||||
"tag": post.tags_for_activitypub(),
|
"tag": post.tags_for_activitypub(),
|
||||||
'language': {
|
"replies": post_replies_for_ap(post.id),
|
||||||
'identifier': post.language_code(),
|
"language": {
|
||||||
'name': post.language_name()
|
"identifier": post.language_code(),
|
||||||
|
"name": post.language_name()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if post.edited_at is not None:
|
if post.edited_at is not None:
|
||||||
|
|
Loading…
Add table
Reference in a new issue