diff --git a/fedireads/templates/snippets/follow_button.html b/fedireads/templates/snippets/follow_button.html
new file mode 100644
index 00000000..23f9ab56
--- /dev/null
+++ b/fedireads/templates/snippets/follow_button.html
@@ -0,0 +1,13 @@
+{% if not request.user in user.followers.all %}
+
+{% else %}
+
+{% endif %}
diff --git a/fedireads/templates/user.html b/fedireads/templates/user.html
index c58ae253..16d4604a 100644
--- a/fedireads/templates/user.html
+++ b/fedireads/templates/user.html
@@ -11,19 +11,7 @@
{{ user.summary | safe }}
{% endif %}
{% if not is_self %}
- {% if not request.user in user.followers.all %}
-
- {% else %}
-
- {% endif %}
+ {% include 'snippets/follow_button.html' with user=user %}
{% endif %}
{% if is_self %}
@@ -38,17 +26,7 @@
{{ follower.username }}
{% if not request.user in follower.followers.all %}
-
- {% else %}
-
+ {% include 'snippets/follow_button.html' with user=user %}
{% endif %}
{% endfor %}
diff --git a/fedireads/templates/user_results.html b/fedireads/templates/user_results.html
index 6c91b705..1f0af835 100644
--- a/fedireads/templates/user_results.html
+++ b/fedireads/templates/user_results.html
@@ -4,10 +4,7 @@
{% for result in results %}
{{ result.username }}
-
+ {% include 'snippets/follow_button.html' with user=result %}
{% endfor %}
diff --git a/fedireads/views.py b/fedireads/views.py
index 90401e75..61324543 100644
--- a/fedireads/views.py
+++ b/fedireads/views.py
@@ -2,7 +2,7 @@
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.db.models import Avg, Q
-from django.http import HttpResponseNotFound
+from django.http import HttpResponseBadRequest, HttpResponseNotFound
from django.shortcuts import redirect
from django.template.response import TemplateResponse
import re
@@ -365,8 +365,10 @@ def favorite(request, status_id):
def follow(request):
''' follow another user, here or abroad '''
username = request.POST['user']
- # should this be an actor rather than an id? idk
- to_follow = models.User.objects.get(username=username)
+ try:
+ to_follow = get_user_from_username(username)
+ except models.User.DoesNotExist:
+ return HttpResponseBadRequest()
outgoing.handle_outgoing_follow(request.user, to_follow)
user_slug = to_follow.localname if to_follow.localname \
@@ -378,7 +380,10 @@ def follow(request):
def unfollow(request):
''' unfollow a user '''
username = request.POST['user']
- to_unfollow = models.User.objects.get(username=username)
+ try:
+ to_unfollow = get_user_from_username(username)
+ except models.User.DoesNotExist:
+ return HttpResponseBadRequest()
outgoing.handle_outgoing_unfollow(request.user, to_unfollow)
user_slug = to_unfollow.localname if to_unfollow.localname \