Adds commenting

works on #59
This commit is contained in:
Mouse Reeve
2020-03-21 16:50:49 -07:00
parent 3f96c8cd9d
commit 7862af9729
16 changed files with 222 additions and 31 deletions

View File

@ -8,7 +8,7 @@ from urllib.parse import urlencode
from fedireads import activitypub
from fedireads import models
from fedireads.status import create_review, create_status, create_tag, \
create_notification
create_notification, create_comment
from fedireads.remote_user import get_or_create_remote_user
from fedireads.broadcast import get_recipients, broadcast
@ -175,6 +175,24 @@ def handle_review(user, book, name, content, rating):
broadcast(user, article_create_activity, other_recipients)
def handle_comment(user, book, name, content):
''' post a review '''
# validated and saves the review in the database so it has an id
comment = create_comment(user, book, name, content)
comment_activity = activitypub.get_comment(comment)
comment_create_activity = activitypub.get_create(user, comment_activity)
fr_recipients = get_recipients(user, 'public', limit='fedireads')
broadcast(user, comment_create_activity, fr_recipients)
# re-format the activity for non-fedireads servers
article_activity = activitypub.get_comment_article(comment)
article_create_activity = activitypub.get_create(user, article_activity)
other_recipients = get_recipients(user, 'public', limit='other')
broadcast(user, article_create_activity, other_recipients)
def handle_tag(user, book, name):
''' tag a book '''
tag = create_tag(user, book, name)
@ -195,19 +213,19 @@ def handle_untag(user, book, name):
broadcast(user, tag_activity, recipients)
def handle_comment(user, review, content):
def handle_reply(user, review, content):
''' respond to a review or status '''
# validated and saves the comment in the database so it has an id
comment = create_status(user, content, reply_parent=review)
if comment.reply_parent:
reply = create_status(user, content, reply_parent=review)
if reply.reply_parent:
create_notification(
comment.reply_parent.user,
reply.reply_parent.user,
'REPLY',
related_user=user,
related_status=comment,
related_status=reply,
)
comment_activity = activitypub.get_status(comment)
create_activity = activitypub.get_create(user, comment_activity)
reply_activity = activitypub.get_status(reply)
create_activity = activitypub.get_create(user, reply_activity)
recipients = get_recipients(user, 'public')
broadcast(user, create_activity, recipients)