diff --git a/fedireads/incoming.py b/fedireads/incoming.py index 225177ce..40c2deb5 100644 --- a/fedireads/incoming.py +++ b/fedireads/incoming.py @@ -187,7 +187,7 @@ def get_following(request, username): return HttpResponseBadRequest() user = models.User.objects.get(localname=username) - following = models.User.objects.filter(followers=user) + following = user.following page = request.GET.get('page') return JsonResponse(activitypub.get_following(user, page, following)) @@ -201,8 +201,8 @@ def handle_incoming_follow(activity): # TODO: allow users to manually approve requests try: models.UserRelationship.objects.create( - user_subject=to_follow, - user_object=user, + user_subject=user, + user_object=to_follow, status='follow_request', relationship_id=activity['id'] ) diff --git a/fedireads/migrations/0008_auto_20200224_1504.py b/fedireads/migrations/0008_auto_20200224_1504.py new file mode 100644 index 00000000..1ddbc8cd --- /dev/null +++ b/fedireads/migrations/0008_auto_20200224_1504.py @@ -0,0 +1,19 @@ +# Generated by Django 3.0.3 on 2020-02-24 15:04 + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('fedireads', '0007_auto_20200223_0902'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='followers', + field=models.ManyToManyField(related_name='following', through='fedireads.UserRelationship', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/fedireads/models/user.py b/fedireads/models/user.py index 37c9cbca..292a7906 100644 --- a/fedireads/models/user.py +++ b/fedireads/models/user.py @@ -38,7 +38,8 @@ class User(AbstractUser): 'self', symmetrical=False, through='UserRelationship', - through_fields=('user_subject', 'user_object') + through_fields=('user_object', 'user_subject'), + related_name='following' ) favorites = models.ManyToManyField( 'Status', diff --git a/fedireads/outgoing.py b/fedireads/outgoing.py index e1a9c510..f91975ff 100644 --- a/fedireads/outgoing.py +++ b/fedireads/outgoing.py @@ -88,8 +88,8 @@ def handle_outgoing_follow(user, to_follow): def handle_outgoing_unfollow(user, to_unfollow): ''' someone local wants to follow someone ''' relationship = models.UserRelationship.objects.get( - user_object=user, - user_subject=to_unfollow + user_subject=user, + user_object=to_unfollow ) activity = activitypub.get_unfollow(relationship) errors = broadcast(user, activity, [to_unfollow.inbox]) diff --git a/fedireads/templates/layout.html b/fedireads/templates/layout.html index 51bfc75b..c6290f93 100644 --- a/fedireads/templates/layout.html +++ b/fedireads/templates/layout.html @@ -25,7 +25,7 @@
📚FediReads
- {% if user.is_authenticated %} + {% if request.user.is_authenticated %}
{% csrf_token %} Welcome, {% include 'snippets/username.html' with user=request.user %} diff --git a/fedireads/templates/user.html b/fedireads/templates/user.html index a71a565e..79605dbe 100644 --- a/fedireads/templates/user.html +++ b/fedireads/templates/user.html @@ -25,12 +25,25 @@ {% for follower in user.followers.all %}
{{ follower.username }} - {% if not request.user in follower.followers.all %} + {% if not request.user in follower.followers.all and request.user != follower %} {% include 'snippets/follow_button.html' with user=follower %} {% endif %}
{% endfor %}
+ +
+

Following

+ {% for following in user.following.all %} +
+ {{ following.username }} + {% if not request.user in following.followers.all and request.user != following %} + {% include 'snippets/follow_button.html' with user=following %} + {% endif %} +
+ {% endfor %} +
+
diff --git a/init_db.py b/init_db.py new file mode 100644 index 00000000..c112b5a7 --- /dev/null +++ b/init_db.py @@ -0,0 +1,10 @@ +from fedireads.models import User +from fedireads.openlibrary import get_or_create_book + +User.objects.create_user('mouse', 'mouse.reeve@gmail.com', 'password123') +User.objects.create_user('rat', 'rat@rat.com', 'ratword') + +User.objects.get(id=1).followers.add(User.objects.get(id=2)) + +get_or_create_book('OL1715344W') +get_or_create_book('OL102749W') diff --git a/rebuilddb.sh b/rebuilddb.sh index 127b5ed7..09d024aa 100755 --- a/rebuilddb.sh +++ b/rebuilddb.sh @@ -21,12 +21,5 @@ fi python manage.py makemigrations fedireads python manage.py migrate -echo "from fedireads.models import User -User.objects.create_user('mouse', 'mouse.reeve@gmail.com', 'password123')" | python manage.py shell -echo "from fedireads.models import User -User.objects.create_user('rat', 'rat@rat.com', 'ratword') -User.objects.get(id=1).followers.add(User.objects.get(id=2))" | python manage.py shell -echo "from fedireads.openlibrary import get_or_create_book -get_or_create_book('OL1715344W') -get_or_create_book('OL102749W')" | python manage.py shell +python manage.py shell < init_db.py python manage.py runserver