예제 #1
0
    def post(self, request, *args, **kwargs):
        if request.user.id is not None:
            follows_between = Follow.objects.filter(
                user=request.user, follow_user=self.visible_user())
            if 'follow' in request.POST:
                new_relation = Follow(user=request.user,
                                      follow_user=self.visible_user())
                if follows_between.count() == 0:
                    new_relation.save()
            elif 'unfollow' in request.POST:
                if follows_between.count() > 0:
                    follows_between.delete()

        return self.get(self, request, *args, **kwargs)
예제 #2
0
def follow_other_user():
    uid = session.get('uid')  # 自己的ID
    fid = int(request.args.get('fid'))  # 关注的人的id

    try:
        # 取消关注
        follow = Follow.query.filter_by(uid=uid, fid=fid).one()
        if follow:
            Follow.query.filter_by(uid=uid, fid=fid).delete()
            User.query.filter_by(id=uid).update({'follows': User.follows - 1})
            User.query.filter_by(id=fid).update({'fans': User.fans - 1})
            db.session.commit()
    except Exception:
        # 关注
        fw = Follow(uid=uid, fid=fid)
        User.query.filter_by(id=uid).update({'follows': User.follows + 1})
        User.query.filter_by(id=fid).update({'fans': User.fans + 1})
        db.session.add(fw)
        db.session.commit()

    #判断是否从首页关注
    is_show_all = request.args.get('is_show_all')
    if is_show_all:  #从首页进行关注
        return redirect(
            f'/user/other_info?uid={fid}&is_show_all={is_show_all}')
    else:
        return redirect(f'/user/other_info?uid={fid}')
예제 #3
0
파일: views.py 프로젝트: luoyibei/Weibo
def follow():
    '''关注博主'''
    f_id = int(request.args.get('f_id'))

    u_id = session.get('u_id')

    if u_id == f_id:
        err = '不允许自己关注自己哦~'
        return render_template('other.html', err=err)

    fw = Follow(u_id=u_id, f_id=f_id)
    try:
        '''关注'''
        User.query.filter_by(id=u_id).update({'n_follow': User.n_follow + 1})
        User.query.filter_by(id=f_id).update({'n_fans': User.n_fans + 1})
        db.session.add(fw)
        db.session.commit()
    except Exception:
        '''取消关注'''
        db.session.rollback()
        User.query.filter_by(id=u_id).update({'n_follow': User.n_follow - 1})
        User.query.filter_by(id=f_id).update({'n_fans': User.n_fans - 1})
        Follow.query.filter_by(f_id=f_id, u_id=u_id).delete()

        db.session.commit()
    return redirect('/user/other?uid=%s' % f_id)
예제 #4
0
 def post(self, request, *args, **kwargs):
     posts = Post.objects.filter(author=self.visible_user())
     follows_between = Follow.objects.filter(following=request.user,
                                             follower=self.visible_user())
     can_follow = (Follow.objects.filter(
         following=request.user, follower=self.visible_user()).count() == 0)
     if 'follow' in request.POST:
         new_relation = Follow(following=request.user,
                               follower=self.visible_user())
         if follows_between.count() == 0:
             new_relation.save()
     elif 'unfollow' in request.POST:
         if follows_between.count() > 0:
             follows_between.delete()
     context = {
         'profile': self.visible_user(),
         'posts': posts,
         'can_follow': can_follow
     }
     return render(request, self.template_name, context)
예제 #5
0
    def post(self, request):
        # 关注或取关
        kwargs: dict = json.loads(request.body)
        if kwargs.keys() != {'uid', 'condition'}:
            return -1
        uid = kwargs['uid']
        uf = User.objects.filter(id=uid)
        if not uf.exists():
            return 1,
        uf = uf.get()

        u = User.objects.filter(id=request.session['uid'])
        if not u.exists():
            return 1,
        u = u.get()

        if uid == request.session['uid']:
            return 2,
        if Follow.objects.filter(follower=u, followed=uf).exists():
            Follow.objects.filter(follower=u, followed=uf).delete()
        else:
            f = Follow()
            f.followed = uf
            f.follower = u
            f.save()
        return 0,
예제 #6
0
파일: views.py 프로젝트: vigor025100/weibo
def follow():
    uid = session['id']  # 当前登录用户id
    fid = request.args.get('uid')  # 被关注用户id
    wid = request.args.get('wid')

    follow = Follow(uid=uid, fid=fid)

    if Follow.query.filter_by(uid=uid, fid=fid).count():
        Follow.query.filter_by(uid=uid, fid=fid).delete()
        db.session.commit()
    else:
        db.session.add(follow)
        db.session.commit()

    return redirect(f'/user/other_info?wid={wid}&uid={fid}')
    def post(self, request):
        user_id = request.user.id
        followee_id = request.GET.get('followee')

        if not followee_id:
            return JsonResponse({'message': 'Check Querystring'}, status = 400)
        try:
            user     = User.objects.get(id=user_id)
            followee = User.objects.get(id=followee_id)
        except Exception:
            return JsonResponse({'message': 'INVALID_USER'}, status = 400)

        Follow(
            follower = user,
            followee = followee,
        ).save()

        return JsonResponse({'message': 'SUCCESS'}, status = 400)
예제 #8
0
def guanzhu():
    fid = request.args.get('fid')
    uid = session['uid']
    
    user = User.query.filter_by(id=fid).one()

    try:
        follow = Follow(uid=uid,fid=fid)
        db.session.add(follow)
        User.query.filter_by(id=fid).update({'fans_num':User.fans_num+1})
        User.query.filter_by(id=uid).update({'follow_num':User.follow_num+1})
        db.session.commit()
    except:
        db.session.rollback()
        Follow.query.filter_by(uid=uid).filter_by(fid=fid).delete()
        User.query.filter_by(id=fid).update({'fans_num':User.fans_num-1})
        User.query.filter_by(id=uid).update({'follow_num':User.follow_num-1})
        db.session.commit()
    return redirect(f'/hudong/check_user?nickname={user.nickname}')
예제 #9
0
def follow(request):
    data = request.data
    workspace = WorkspaceUtil.get_workspace(request)
    if not workspace:
        return Response({"status": 401, "msg": "token过期"})
    passport_id = workspace.passport_id
    follow_id = data["follow_id"]

    follow = Follow()
    follow.passport_id = passport_id
    follow.follow_id = follow_id
    follow.save()

    return Response({"status": 200, "msg": "关注成功"})
예제 #10
0
def follow():
    fid = int(request.args.get('fid'))
    uid = session['uid']

    # 不允许用户自己关注自己
    if uid == fid:
        abort(403)

    fw = Follow(uid=uid, fid=fid)
    try:
        User.query.filter_by(id=uid).update({'n_follow': User.n_follow + 1})
        User.query.filter_by(id=fid).update({'n_fans': User.n_fans + 1})
        db.session.add(fw)
        db.session.commit()
    except IntegrityError:
        db.session.rollback()
        User.query.filter_by(id=uid).update({'n_follow': User.n_follow - 1})
        User.query.filter_by(id=fid).update({'n_fans': User.n_fans - 1})
        Follow.query.filter_by(uid=uid, fid=fid).delete()
        db.session.commit()

    return redirect(f'/user/other?uid={fid}')
예제 #11
0
def follow():
    '''关注'''
    fid = int(request.args.get('fid'))
    check = int(request.args.get('check'))
    uid = session['uid']

    # 不能关注自己
    if fid == uid:
        return render_template('response', msg='拒绝访问')

    follow_relation = Follow(uid=uid, fid=fid)
    if check == 1:
        User.query.filter_by(uid=uid).update({'follow': User.follow - 1})
        User.query.filter_by(uid=fid).update({'fans': User.fans - 1})
        Follow.query.filter_by(uid=uid, fid=fid).delete()
    else:
        User.query.filter_by(uid=uid).update({'follow': User.follow + 1})
        User.query.filter_by(uid=fid).update({'fans': User.fans + 1})
        db.session.add(follow_relation)
    db.session.commit()
    user = User.query.get(fid)
    return redirect(f'/user/other?fid={fid}&fname={user.username}')