From f2eaf5d3b73aa33b9594d9806202b60ce691801f Mon Sep 17 00:00:00 2001 From: freamon Date: Mon, 22 Apr 2024 07:48:20 +0100 Subject: [PATCH 1/2] Add stupid reply handling to top-level comments also --- app/post/routes.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/post/routes.py b/app/post/routes.py index a1387743..87422436 100644 --- a/app/post/routes.py +++ b/app/post/routes.py @@ -84,6 +84,16 @@ def show_post(post_id: int): flash(_('This type of comment is not accepted, sorry.'), 'error') return redirect(url_for('activitypub.post_ap', post_id=post_id)) + # respond to comments that are just variants of 'this' + if reply_is_stupid(form.body.data): + existing_vote = PostVote.query.filter_by(user_id=current_user.id, post_id=post.id).first() + if existing_vote is None: + flash(_('We have upvoted the post for you.'), 'warning') + post_vote(post.id, 'upvote') + else: + flash(_('You have already upvoted the post, you do not need to say "this" also.'), 'error') + return redirect(url_for('activitypub.post_ap', post_id=post_id)) + reply = PostReply(user_id=current_user.id, post_id=post.id, community_id=community.id, body=form.body.data, body_html=markdown_to_html(form.body.data), body_html_safe=True, from_bot=current_user.bot, nsfw=post.nsfw, nsfl=post.nsfl, From d49470ab8ba62a6eb8af99e1643bedfcd576cb81 Mon Sep 17 00:00:00 2001 From: freamon Date: Mon, 22 Apr 2024 16:14:32 +0100 Subject: [PATCH 2/2] Add one upvote from yourself for own posts and replies --- app/community/routes.py | 14 +++++++++++++- app/post/routes.py | 20 +++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/app/community/routes.py b/app/community/routes.py index 34cf7e06..4374e6c0 100644 --- a/app/community/routes.py +++ b/app/community/routes.py @@ -33,7 +33,7 @@ from app.utils import get_setting, render_template, allowlist_html, markdown_to_ request_etag_matches, return_304, instance_banned, can_create_post, can_upvote, can_downvote, user_filters_posts, \ joined_communities, moderating_communities, blocked_domains, mimetype_from_url, blocked_instances, \ community_moderators, communities_banned_from, show_ban_message, recently_upvoted_posts, recently_downvoted_posts, \ - blocked_users + blocked_users, post_ranking from feedgen.feed import FeedGenerator from datetime import timezone, timedelta @@ -496,6 +496,7 @@ def add_discussion_post(actor): post.ap_id = f"https://{current_app.config['SERVER_NAME']}/post/{post.id}" db.session.commit() + upvote_own_post(post) notify_about_post(post) if not community.local_only: @@ -571,6 +572,7 @@ def add_image_post(actor): post.cross_posts.append(op.id) db.session.commit() + upvote_own_post(post) notify_about_post(post) if not community.local_only: @@ -644,6 +646,7 @@ def add_link_post(actor): post.cross_posts.append(op.id) db.session.commit() + upvote_own_post(post) notify_about_post(post) if not community.local_only: @@ -717,6 +720,7 @@ def add_video_post(actor): post.cross_posts.append(op.id) db.session.commit() + upvote_own_post(post) notify_about_post(post) if not community.local_only: @@ -1406,3 +1410,11 @@ def lookup(community, domain): return redirect('/') +def upvote_own_post(post): + post.score = 1 + post.up_votes = 1 + post.ranking = post_ranking(post.score, utcnow()) + vote = PostVote(user_id=current_user.id, post_id=post.id, author_id=current_user.id, effect=1) + db.session.add(vote) + db.session.commit() + cache.delete_memoized(recently_upvoted_posts, current_user.id) diff --git a/app/post/routes.py b/app/post/routes.py index 87422436..204825be 100644 --- a/app/post/routes.py +++ b/app/post/routes.py @@ -112,6 +112,15 @@ def show_post(post_id: int): db.session.add(reply) db.session.commit() + + # upvote own reply + reply.score = 1 + reply.up_votes = 1 + reply.ranking = confidence(1, 0) + vote = PostReplyVote(user_id=current_user.id, post_reply_id=reply.id, author_id=current_user.id, effect=1) + db.session.add(vote) + cache.delete_memoized(recently_upvoted_post_replies, current_user.id) + reply.ap_id = reply.profile_id() if current_user.reputation > 100: reply.up_votes += 1 @@ -622,8 +631,16 @@ def add_reply(post_id: int, comment_id: int): db.session.add(notification) in_reply_to.author.unread_notifications += 1 db.session.commit() + + # upvote own reply + reply.score = 1 + reply.up_votes = 1 + reply.ranking = confidence(1, 0) + vote = PostReplyVote(user_id=current_user.id, post_reply_id=reply.id, author_id=current_user.id, effect=1) + db.session.add(vote) + cache.delete_memoized(recently_upvoted_post_replies, current_user.id) + reply.ap_id = reply.profile_id() - db.session.commit() if current_user.reputation > 100: reply.up_votes += 1 reply.score += 1 @@ -736,6 +753,7 @@ def add_reply(post_id: int, comment_id: int): return redirect(url_for('post.continue_discussion', post_id=post_id, comment_id=reply.parent_id)) else: form.notify_author.data = True + return render_template('post/add_reply.html', title=_('Discussing %(title)s', title=post.title), post=post, is_moderator=is_moderator, form=form, comment=in_reply_to, markdown_editor=current_user.is_authenticated and current_user.markdown_editor, moderating_communities=moderating_communities(current_user.get_id()), mods=mod_list,