def setUp(self): super(UsersTests, self).setUp() self._mox = mox.Mox() self._other = DATA self._me = { 'username': '******', 'password': '******', 'email': '*****@*****.**', } User.create(**self._me) User.create(**self._other) Following.create(self._me['username'], self._other['username']) self._mox.StubOutWithMock(APIHandler, 'get_current_user', use_mock_anything=True) APIHandler.get_current_user().AndReturn(self._me['username']) self._mox.ReplayAll()
def func(): user = User.query.get(current_user.id) if request.method == 'POST': followed_id = request.form['followed_id'] if db.session.query(exists().where(User.id == int(followed_id))) and \ len(Following.query.filter(followed_id == Following.followed_id and \ Following.follower_id == user.id).all()) == 0: following = Following(followed_id=int(followed_id), follower_id=current_user.id) user.followings.append(following) db.session.commit() return 'follow' else: unfollowed_id = followed_id following = Following.query.filter( unfollowed_id == Following.followed_id and \ Following.follower_id == user.id).delete() db.session.commit() return 'unfollow' all_users = User.query.filter(User.id != user.id).all() followed = set([f.followed_id for f in user.followings]) return render_template('follow.jinja2', all_users=all_users, followed=followed)
def test_unfollow_one(self): r = self.delete(self._path.format(self._other['username'])) self.assertEqual(r.code, 200) self.assertDictEqual(json.loads(r.body), {'status': 1}) exists = Following.get_by_user_following( self._me['username'], self._other['username']) self.assertIsNone(exists) self._mox.VerifyAll()
def follow(user): followed_user = User.query.filter_by(username=user).first() follower = Followers(follower=current_user.username, user_id=followed_user.id) following = Following(user=user, user_id=current_user.id) db.session.add(following) db.session.add(follower) db.session.commit() return redirect(url_for('view_profile', user=user))
def get(self): username = self.current_user users = yield gen.maybe_future(Following.list_following(username)) followings = list() if users: ids = [user.following_id for user in users] users = yield gen.maybe_future(User.get_multi(*ids)) followings = [user.information() for user in users] raise gen.Return({ 'followings': followings, 'total': len(followings), })
def get(self, username): user = yield gen.maybe_future(User.get_by_name(username)) if user is None: raise exceptions.UsernameDoesNotExists() else: info = user.information() followed, blocked = False, False if self.current_user != username: me = yield gen.maybe_future(User.get_by_name(self.current_user)) followed = yield gen.maybe_future( Following.followed(me.id, user.id)) blocked = yield gen.maybe_future( Blocked.blocked(me.id, user.id)) info.update({'followed': followed, 'blocked': blocked}) raise gen.Return(info)
def seed_follows(): follow = [ Following(user_id=1, followed_user_id=1), Following(user_id=1, followed_user_id=2), Following(user_id=1, followed_user_id=3), Following(user_id=1, followed_user_id=4), Following(user_id=1, followed_user_id=5), Following(user_id=2, followed_user_id=1), Following(user_id=2, followed_user_id=2), Following(user_id=2, followed_user_id=3), Following(user_id=2, followed_user_id=4), Following(user_id=5, followed_user_id=3), Following(user_id=5, followed_user_id=4), Following(user_id=5, followed_user_id=5), Following(user_id=4, followed_user_id=3), Following(user_id=4, followed_user_id=4), Following(user_id=4, followed_user_id=5), Following(user_id=3, followed_user_id=1), Following(user_id=3, followed_user_id=2), Following(user_id=3, followed_user_id=3), Following(user_id=3, followed_user_id=4), Following(user_id=5, followed_user_id=1), ] db.session.add_all(follow) db.session.commit()
def delete(self, username): me = self.current_user r = yield gen.maybe_future(Following.get_by_user_following(me, username)) yield gen.maybe_future(r.delete())
def post(self, username): me = self.current_user yield gen.maybe_future(Following.create(me, username))
def post_following(user_id): data = request.json follow = Following(user_id=data['userId'], followed_user_id=user_id) db.session.add(follow) db.session.commit() return {'message': 'Done'}, 201