1
0
Fork 0

Allow removing followers and fix follow rejections

* adds the ability to remove a user from your followers list
* fixes verbs.Reject to process reject activities for previously accepted follows in both directions

fixes #2635
This commit is contained in:
Hugh Rundle 2023-11-19 20:03:48 +11:00
parent 06568aab88
commit 2ba0e3d7ff
No known key found for this signature in database
GPG key ID: A7E35779918253F9
9 changed files with 120 additions and 21 deletions

View file

@ -113,6 +113,7 @@ from .feed import DirectMessage, Feed, Replies, Status
from .follow import (
follow,
unfollow,
remove_follow,
ostatus_follow_request,
ostatus_follow_success,
remote_follow,

View file

@ -69,6 +69,34 @@ def unfollow(request):
return redirect("/")
@login_required
@require_POST
def remove_follow(request):
"""remove a previously approved follower without blocking them"""
username = request.POST["user"]
to_remove = get_user_from_username(request.user, username)
try:
models.UserFollows.objects.get(
user_subject=to_remove, user_object=request.user
).reject()
except models.UserFollows.DoesNotExist:
clear_cache(to_remove, request.user)
try:
models.UserFollowRequest.objects.get(
user_subject=to_remove, user_object=request.user
).reject()
except models.UserFollowRequest.DoesNotExist:
clear_cache(to_remove, request.user)
if is_api_request(request):
return HttpResponse()
# this is handled with ajax so it shouldn't really matter
return redirect("/")
@login_required
@require_POST
def accept_follow_request(request):