Example #1
0
    def follow(self, request, pk=None):
        profile = self.get_user(request, pk)
        allow_follow_user(request.user, profile)

        profile_followers = profile.followers

        with transaction.atomic():
            if request.user.is_following(profile):
                request.user.follows.remove(profile)
                followed = False

                profile_followers -= 1
                profile.followers = F('followers') - 1
                request.user.following = F('following') - 1
            else:
                request.user.follows.add(profile)
                followed = True

                profile_followers += 1
                profile.followers = F('followers') + 1
                request.user.following = F('following') + 1

            profile.save(update_fields=['followers'])
            request.user.save(update_fields=['following'])

            return Response({
                'is_followed': followed,
                'followers': profile_followers
            })
Example #2
0
    def follow(self, request, pk=None):
        profile = self.get_user(pk)
        allow_follow_user(request.user, profile)

        profile_followers = profile.followers

        with transaction.atomic():
            if request.user.is_following(profile):
                request.user.follows.remove(profile)
                followed = False

                profile_followers -= 1
                profile.followers = F('followers') - 1
                request.user.following = F('following') - 1
            else:
                request.user.follows.add(profile)
                followed = True

                profile_followers += 1
                profile.followers = F('followers') + 1
                request.user.following = F('following') + 1

            profile.save(update_fields=['followers'])
            request.user.save(update_fields=['following'])

            return Response({
                'is_followed': followed,
                'followers': profile_followers
            })
Example #3
0
def follow_user(request, profile):
    user_locked = request.user.lock()
    profile.lock()

    if request.user.is_following(profile):
        request.user.follows.remove(profile)
        followed = False
    else:
        allow_follow_user(request.user, profile)
        followed = True
        request.user.follows.add(profile)

    if followed:
        message = _("You are now following %(user)s.")
        notify_user(profile,
                    _("%(user)s is now following you."),
                    reverse(user_profile.get_default_link(),
                            kwargs={
                                'user_slug': user_locked.slug,
                                'user_id': user_locked.id
                            }),
                    "profile_%s" % user_locked.pk,
                    formats={'user': user_locked.username},
                    sender=user_locked,
                    update_user=False)
    else:
        message = _("You have stopped following %(user)s.")
    message = message % {'user': profile.username}

    profile.followers = profile.followed_by.count()
    if followed:
        profile.save(update_fields=['followers', 'new_notifications'])
    else:
        profile.save(update_fields=['followers'])

    user_locked.following = user_locked.follows.count()
    user_locked.save(update_fields=['following'])

    if request.is_ajax:
        return {'is_following': followed, 'message': message}
    else:
        messages.success(request, message)
Example #4
0
def follow_user(request, profile):
    user_locked = request.user.lock()
    profile.lock()

    if request.user.is_following(profile):
        request.user.follows.remove(profile)
        followed = False
    else:
        allow_follow_user(request.user, profile)
        followed = True
        request.user.follows.add(profile)

    if followed:
        message = _("You are now following %(user)s.")
        notify_user(profile,
            _("%(user)s is now following you."),
            reverse(user_profile.get_default_link(), kwargs={
                'user_slug': user_locked.slug, 'user_id': user_locked.id
            }),
            "profile_%s" % user_locked.pk,
            formats={'user': user_locked.username},
            sender=user_locked,
            update_user=False)
    else:
        message = _("You have stopped following %(user)s.")
    message = message % {'user': profile.username}

    profile.followers = profile.followed_by.count()
    if followed:
        profile.save(update_fields=['followers', 'new_notifications'])
    else:
        profile.save(update_fields=['followers'])

    user_locked.following = user_locked.follows.count()
    user_locked.save(update_fields=['following'])

    if request.is_ajax:
        return {'is_following': followed, 'message': message}
    else:
        messages.success(request, message)