mirror of
https://codeberg.org/rimu/pyfedi
synced 2025-01-23 19:36:56 -08:00
Fixup cross posts if post is removed
This commit is contained in:
parent
d0b146ec0f
commit
d9dc0d2960
2 changed files with 20 additions and 0 deletions
|
@ -629,6 +629,13 @@ def process_inbox_request(request_json, activitypublog_id, ip_address):
|
|||
activity_log.result = 'failure'
|
||||
activity_log.exception_message = 'dict instead of string ' + str(to_be_deleted_ap_id)
|
||||
else:
|
||||
post = Post.query.filter_by(ap_id=to_be_deleted_ap_id).first()
|
||||
if post and post.url and post.cross_posts is not None:
|
||||
old_cross_posts = Post.query.filter(Post.id.in_(post.cross_posts)).all()
|
||||
post.cross_posts.clear()
|
||||
for ocp in old_cross_posts:
|
||||
if ocp.cross_posts is not None:
|
||||
ocp.cross_posts.remove(post.id)
|
||||
delete_post_or_comment(user_ap_id, community_ap_id, to_be_deleted_ap_id)
|
||||
activity_log.result = 'success'
|
||||
elif request_json['object']['type'] == 'Page': # Editing a post
|
||||
|
@ -858,6 +865,12 @@ def process_inbox_request(request_json, activitypublog_id, ip_address):
|
|||
post = Post.query.filter_by(ap_id=ap_id).first()
|
||||
# Delete post
|
||||
if post:
|
||||
if post.url and post.cross_posts is not None:
|
||||
old_cross_posts = Post.query.filter(Post.id.in_(post.cross_posts)).all()
|
||||
post.cross_posts.clear()
|
||||
for ocp in old_cross_posts:
|
||||
if ocp.cross_posts is not None:
|
||||
ocp.cross_posts.remove(post.id)
|
||||
post.delete_dependencies()
|
||||
post.community.post_count -= 1
|
||||
db.session.delete(post)
|
||||
|
|
|
@ -831,6 +831,13 @@ def post_delete(post_id: int):
|
|||
post = Post.query.get_or_404(post_id)
|
||||
community = post.community
|
||||
if post.user_id == current_user.id or community.is_moderator() or current_user.is_admin():
|
||||
if post.url:
|
||||
if post.cross_posts is not None:
|
||||
old_cross_posts = Post.query.filter(Post.id.in_(post.cross_posts)).all()
|
||||
post.cross_posts.clear()
|
||||
for ocp in old_cross_posts:
|
||||
if ocp.cross_posts is not None:
|
||||
ocp.cross_posts.remove(post.id)
|
||||
post.delete_dependencies()
|
||||
post.flush_cache()
|
||||
db.session.delete(post)
|
||||
|
|
Loading…
Add table
Reference in a new issue