diff --git a/fedireads/templates/user.html b/fedireads/templates/user.html
index 8feb12ab..ec51b9db 100644
--- a/fedireads/templates/user.html
+++ b/fedireads/templates/user.html
@@ -20,6 +20,27 @@
{% endif %}
+
+ {% if is_self and user.follower_requests.all %}
+
+
Follow Requests
+ {% for requester in user.follower_requests.all %}
+
+ {% include 'snippets/username.html' with user=requester show_full=True %}
+
+
+
+ {% endfor %}
+
+ {% endif %}
Followers
{% for follower in user.followers.all %}
diff --git a/fedireads/urls.py b/fedireads/urls.py
index d962671b..f3e6e4a7 100644
--- a/fedireads/urls.py
+++ b/fedireads/urls.py
@@ -62,4 +62,8 @@ urlpatterns = [
re_path(r'^edit_profile/?$', actions.edit_profile),
re_path(r'^clear-notifications/?$', actions.clear_notifications),
+ re_path(r'^accept_follow_request/?$', actions.accept_follow_request),
+ re_path(r'^delete_follow_request/?$', actions.delete_follow_request),
+
+
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
diff --git a/fedireads/view_actions.py b/fedireads/view_actions.py
index 5aa2c8ad..d173c80b 100644
--- a/fedireads/view_actions.py
+++ b/fedireads/view_actions.py
@@ -163,3 +163,35 @@ def clear_notifications(request):
request.user.notification_set.filter(read=True).delete()
return redirect('/notifications')
+@login_required
+def accept_follow_request(request):
+ username = request.POST['user']
+ try:
+ requester = get_user_from_username(username)
+ except models.User.DoesNotExist:
+ return HttpResponseBadRequest()
+
+ follow_request = models.UserFollowRequest.objects.get(user_subject=requester, user_object=request.user)
+ # We don't keep a full copy of the follow request, but a minimal copy is good enough for now.
+ follow_activity = {'id': follow_request.relationship_id}
+ outgoing.handle_outgoing_accept(requester, request.user, follow_activity)
+ user_slug = requester.localname if requester.localname \
+ else requester.username
+ return redirect('/user/%s' % user_slug)
+
+@login_required
+def delete_follow_request(request):
+ username = request.POST['user']
+ try:
+ requester = get_user_from_username(username)
+ except models.User.DoesNotExist:
+ return HttpResponseBadRequest()
+
+ try:
+ follow_request = models.UserFollowRequest.objects.get(user_subject=requester, user_object=request.user)
+ follow_request.delete()
+ # Generate a Reject activity here.
+ except models.UserFollowRequest.DoesNotExist:
+ pass
+
+ return redirect('/user/%s' % request.user.localname)