diff --git a/fedireads/templates/snippets/follow_button.html b/fedireads/templates/snippets/follow_button.html new file mode 100644 index 000000000..23f9ab565 --- /dev/null +++ b/fedireads/templates/snippets/follow_button.html @@ -0,0 +1,13 @@ +{% if not request.user in user.followers.all %} +
+ {% csrf_token %} + + +
+{% else %} +
+ {% csrf_token %} + + +
+{% endif %} diff --git a/fedireads/templates/user.html b/fedireads/templates/user.html index c58ae2539..16d4604ad 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 %} -
- {% csrf_token %} - - -
- {% else %} -
- {% csrf_token %} - - -
- {% 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 %} -
- {% csrf_token %} - - -
- {% else %} -
- {% csrf_token %} - - -
+ {% 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 6c91b705f..1f0af8351 100644 --- a/fedireads/templates/user_results.html +++ b/fedireads/templates/user_results.html @@ -4,10 +4,7 @@ {% for result in results %}

{{ result.username }}

-
- {% csrf_token %} - -
+ {% include 'snippets/follow_button.html' with user=result %}
{% endfor %} diff --git a/fedireads/views.py b/fedireads/views.py index 90401e757..613245431 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 \