Reverse user_subject & user_object.

In the relationships table:

user_subject should be the user doing the following.
user_object should be the user who is followed.

This fixes a bug where unfollowing a user deletes the relationship in
both directions.
This commit is contained in:
Adam Kelly 2020-02-24 16:10:09 +00:00
parent d6e48f9a21
commit 592c2b7dfd
3 changed files with 5 additions and 5 deletions

View file

@ -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']
)

View file

@ -38,7 +38,7 @@ 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(

View file

@ -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])