def test_show_likes(self):
        """Does messages the user liked show up?"""

        u3 = User.signup("testuser3", "*****@*****.**", "password3", None)
        u3.id = 4545
        u4 = User.signup("abcdef", "*****@*****.**", "password4", None)
        u4.id = 5656

        db.session.add_all([u3, u4])
        db.session.commit()

        m1 = Message(text='message one for testuser1', user_id=1212)
        m1.id = 111
        m2 = Message(text='message one for testuser2', user_id=2323)
        m2.id = 222
        m3 = Message(text='message two for testuser2', user_id=2323)
        m3.id = 333
        m4 = Message(text='message one for testuser3', user_id=4545)
        m4.id = 444
        m5 = Message(text='message one for abcdef', user_id=5656)
        m5.id = 555

        db.session.add_all([m1, m2, m3, m4, m5])
        db.session.commit()

        l1 = Likes(user_id=1212, message_id=222)
        l1.id = 12
        l2 = Likes(user_id=1212, message_id=444)
        l2.id = 34
        l3 = Likes(user_id=1212, message_id=555)
        l3.id = 45

        db.session.add_all([l1, l2, l3])
        db.session.commit()

        with self.client as c:
            with c.session_transaction() as sess:
                sess[CURR_USER_KEY] = self.u1.id

            resp = c.get(f"/users/{self.u1.id}/likes")
            html = resp.get_data(as_text=True)

            self.assertEqual(resp.status_code, 200)
            self.assertIn('message one for testuser2', html)
            self.assertIn('message one for testuser3', html)
            self.assertIn('message one for abcdef', html)
            self.assertNotIn('message one for testuser1', html)
            self.assertNotIn('message two for testuser2', html)
    def setUp(self):
        """Create test client, add sample data"""

        User.query.delete()
        Message.query.delete()
        Follows.query.delete()
        Likes.query.delete()

        # OR
        # db.drop_all()
        # db.create_all()

        self.client = app.test_client()

        self.testuser_1 = User.signup(username="******",
                                      email="*****@*****.**",
                                      password="******",
                                      image_url=None)

        self.testuser_2 = User.signup(username="******",
                                      email="*****@*****.**",
                                      password="******",
                                      image_url=None)

        db.session.commit()

        self.testuser_1.following.append(self.testuser_2)

        self.testmessage_1 = Message(text="This is the first test message!",
                                     user_id=self.testuser_1.id)

        self.testmessage_2 = Message(text="This is the second test message!",
                                     user_id=self.testuser_2.id)

        db.session.add(self.testmessage_1)
        db.session.add(self.testmessage_2)

        db.session.commit()

        like_1 = Likes(user_id=self.testuser_1.id,
                       message_id=self.testmessage_2.id)

        like_2 = Likes(user_id=self.testuser_2.id,
                       message_id=self.testmessage_1.id)

        db.session.add(like_1)
        db.session.add(like_2)
        db.session.commit()
def add_like():
    ret = {"error": 0}
    try:
        report_id = int(request.form['report_id'])
        user_id = int(request.form['user_id'])
        value = int(request.form['value'])
        flag_value = int(request.form["flag_value"])

        # check if like for same report exists by this user
        like = Likes.query.filter_by(user=user_id).\
            filter_by(report=report_id).first()
        if like:
            print "[add_like] User already had liked/disliked this report"
            like.value = value
        else:
            like = Likes(report_id, user_id, value, flag_value)

        db.session.add(like)
        db.session.commit()
        ret["msg"] = "The Like and flag is added successfully"
    except Exception as exp:
        print("add_like() :: exp: %s" % exp)
        print(traceback.format_exc())
        ret["error"] = 1
        ret["msg"] = "Got exception: %s" % exp
    return json.dumps(ret)
Exemple #4
0
    def test_is_liked_by(self):
        """Does the is_liked_by work"""

        u = self.user
        u2 = User(email="*****@*****.**",
                  username="******",
                  password="******")

        m = Message(user_id=u.id, text='test content')

        db.session.add_all([u2, m])
        db.session.commit()

        #not like
        self.assertEqual(len(u2.likes), 0)
        self.assertEqual(len(m.likes_users), 0)
        self.assertEqual(u2.is_like(m), False)
        self.assertEqual(m.is_liked_by(u2), False)

        like = Likes(user_id=u2.id, message_id=m.id)
        db.session.add(like)
        db.session.commit()

        self.assertEqual(len(u2.likes), 1)
        self.assertEqual(len(m.likes_users), 1)
        self.assertEqual(u2.is_like(m), True)
        self.assertEqual(m.is_liked_by(u2), True)
    def setUp(self):
        db.drop_all()
        db.create_all()
        self.client = app.test_client()
        user_1 = User.signup("user1",'*****@*****.**','password')
        user_2 = User.signup("user2",'*****@*****.**','password')
        user_3 = User.signup("user3",'*****@*****.**','password')

        db.session.add_all([user_1,user_2,user_3])
        db.session.commit()
        self.user_1 = user_1
        self.user_2 = user_2
        self.user_3 = user_3

        area_1 = Area(city="Irvine", state="CA")
        self.user_2.areas.append(area_1)
        db.session.commit()
        self.area_1 = area_1

        area_2 = Area(city="Irvine", state="CA")
        self.user_3.areas.append(area_2)
        db.session.commit()
        self.area_2 = area_2

        d = {"googlePlaceId":"ChIJ9f9zhYDb3IARfXSrxrDSdq4","name":"Lazy Dog Restaurant & Bar","address":"address"}
        rest_1 = Restaurant(name=d['name'],address=d['address'], google_place_id=d['googlePlaceId'],user_id=self.user_3.id, area_id=self.area_2.id)
        db.session.add(rest_1)
        db.session.commit()
        self.rest_1 = rest_1
        like = Likes(user_id=user_3.id, restaurant_id=rest_1.id)
        db.session.add(like)
        db.session.commit()
    def test_users_likes_logged_in(self):
        """A logged in user should be able to see any user's liked warbles"""

        user1_id = self.user1.id
        user2_id = self.user2.id

        message = Message(text="Test warble to like",
                          timestamp=None,
                          user_id=user1_id)
        db.session.add(message)
        db.session.commit()

        like = Likes(user_id=user2_id, message_id=message.id)
        db.session.add(like)
        db.session.commit()

        with self.client as c:
            with c.session_transaction() as sess:
                sess[CURR_USER_KEY] = user1_id

            resp = c.get(f'/users/{user2_id}/likes')
            html = resp.get_data(as_text=True)

            self.assertEqual(resp.status_code, 200)
            self.assertIn("Test warble to like", html)
Exemple #7
0
def likepost(post_id):
    if request.method=="POST":
        like=Likes(current_user.id,post_id)
        db.session.add(like)
        db.session.commit()
        count=countlikes(post_id)
        return jsonify(response=[{'message':'Post Liked','Likes':count}])
    def test_delete_messages_likes(self):
        """test if message got deleted by the user and it deletes from likes table"""
        u = User(email="*****@*****.**",
                 username="******",
                 password="******")
        db.session.add(u)
        db.session.commit()
        u2 = User(email="*****@*****.**",
                  username="******",
                  password="******")
        db.session.add(u2)
        db.session.commit()
        follow = Follows(user_being_followed_id=u.id, user_following_id=u2.id)
        db.session.add(follow)
        db.session.commit()

        m = Message(text="warblewarble", user_id=u.id)
        db.session.add(m)
        db.session.commit()
        l = Likes(user_that_liked=u2.id, message_liked=m.id)
        db.session.add(l)
        db.session.commit()
        self.assertEqual(len(u2.likes), 1)
        db.session.delete(m)
        db.session.commit()
        self.assertEqual(len(u2.likes), 0)
        self.assertEqual(len(u.messages), 0)
Exemple #9
0
    def setUp(self):
        """Create test client, add sample data."""

        db.drop_all()
        db.create_all()

        user = User.signup(username="******",
                           email="*****@*****.**",
                           password="******",
                           image_url=None)
        user.id = 1000
        self.user_id = user.id

        db.session.commit()

        message = Message(text="Test Message", user_id=1000)
        message.id = 2000
        self.message_id = message.id
        db.session.add(message)
        db.session.commit()

        self.user1 = User.query.get(self.user_id)

        like = Likes(user_id=self.user1.id, message_id=self.message_id)
        like.id = 2000
        self.like_id = like.id
        db.session.add(like)
        db.session.commit()

        self.client = app.test_client()
Exemple #10
0
    def test_show_likes(self):
        msg1 = Message(text="Message 1", user_id=self.testuser1.id)
        msg2 = Message(text="Message 2", user_id=self.testuser1.id)
        db.session.add_all([msg1, msg2])
        db.session.commit()
        # user2 likes user1's message
        likes = Likes(user_id=self.testuser2.id, message_id=msg1.id)
        db.session.add(likes)
        db.session.commit()
        invalid_id = self.testuser1.id + self.testuser2.id

        with self.client as c:
            # log in
            with c.session_transaction() as sess:
                sess[CURR_USER_KEY] = self.testuser1.id

            resp = c.get(f"/users/{invalid_id}/likes")
            self.assertEqual(resp.status_code, 404)

            resp = c.get(f"/users/{self.testuser2.id}/likes")
            html = resp.get_data(as_text=True)

            self.assertEqual(resp.status_code, 200)
            self.assertIn("Message 1", html)
            self.assertNotIn("Message 2", html)
            self.assertIn(self.testuser1.username, html)
            self.assertIn(self.testuser2.username, html)
Exemple #11
0
def message_like(message_id):
    """Like or stop liking a message"""

    # must be logged in to like or stop liking a message
    if not g.user:
        flash("Access unauthorized.", "danger")
        return redirect("/")

    # if the logged in user already likes the message, stop liking
    if message_id in [like.id for like in g.user.likes]:
        like_to_delete = Likes.query.filter(
            Likes.user_id == g.user.id,
            Likes.message_id == message_id).first()
        db.session.delete(like_to_delete)
        db.session.commit()

    # if the message is not authored by the user, like it
    elif message_id not in [msg.id for msg in g.user.messages]:
        like_to_add = Likes(user_id=g.user.id, message_id=message_id)
        db.session.add(like_to_add)
        db.session.commit()

    # if the message is authored by the logged in user, take them down a peg
    else:
        flash("You can't like your own warble", "danger")

    return redirect('/')
Exemple #12
0
    def get(self, post_id):
        """
        get:   Get
        Args:
                self:   This object
                post_id:    Post ID
        """
        if not self.user:
            return self.redirect('/login')

        key = db.Key.from_path('Post', int(post_id), parent=blog_key())
        b = db.get(key)

        if not b:
            self.render('notfound.html')
            return
#
#       Check that user IDs do not match
#
        user_id = self.user.key().id()
        if b.user_id == user_id:
            return self.redirect('/blog/%s' % str(b.key().id()))

        if b.is_liked_by_user(user_id) == 'Liked':
            return self.redirect('/blog/%s' % str(b.key().id()))

        l = Likes(parent=blog_key(),
                  post_id=int(post_id),
                  user_id=int(user_id))
        l.put()
        self.redirect('/blog/%s' % str(b.key().id()))
Exemple #13
0
def add_like(msg_id):
    """Add a like to a message"""
    if g.user:
        new_like = Likes(user_id=g.user.id, message_id=msg_id)
        db.session.add(new_like)
        db.session.commit()
    return redirect(f'/messages/{msg_id}')
    def setup_recommendations_and_likes(self):
        """This method sets up recommendationss to be tested in 
            other test methods.
        """
        r1 = Recommendation(
            title="Fire Doughnuts in Canada",
            content=
            "Ever tried jerk flavored doughnuts?, then you haven't lived!. Marley's yard gotchu!",
            business_name="Marleys Yard",
            business_address="2345 67 Ave NW",
            business_city="Edmonton",
            business_state="Alberta",
            business_country="Canada",
            business_rating=4,
            user_id=self.testuser_id)

        r2 = Recommendation(
            id=365,
            title="Deep Dish Pizza in Edmonton, Canada",
            content=
            "Looking for delicious deep dish pizza?, Chicago 001 has the best on Whyte Ave",
            business_name="Chicago 001",
            business_address="1946 Whyte Ave NW",
            business_city="Edmonton",
            business_state="Alberta",
            business_country="Canada",
            business_rating=5,
            user_id=self.u2id)

        db.session.add_all([r1, r2])
        db.session.commit()

        l1 = Likes(user_id=self.testuser_id, recommendation_id=365)
        db.session.add(l1)
        db.session.commit()
Exemple #15
0
def likepost(post_id):
    if request.method == "POST":
        like = Likes(session['userid'], post_id)
        db.session.add(like)
        db.session.commit()
        count = countlikes(post_id)
        return jsonify(response=[{'message': 'Post Liked'}])
Exemple #16
0
def add_like(message_id):
    """ Add like to "likes" table"""

    if not g.user:
        flash("Access unauthorized.", "danger")
        return redirect("/")
    # query for record in "likes" table that matches user id and message id of
    # tweet the user just clicked on the thumbs up icon. if record found returns
    # that record, if record not found returns None.
    like_rec_test = Likes.query.filter(Likes.user_id == g.user.id,
                                       Likes.message_id == message_id).first()
    # if record found, user clicked on icon for messaged already "liked", therefore
    # user wants to "unlike" message so remove record from likes table. If none, this
    # is a new "like"
    if like_rec_test:
        db.session.delete(like_rec_test)
        db.session.commit()
        return redirect("/")
    # if matching record not found in likes table create new
    # entry in likes table
    like = Likes(user_id=g.user.id, message_id=message_id)
    db.session.add(like)
    db.session.commit()

    return redirect("/")
Exemple #17
0
 def set_up_likes(self):
     """set up likes"""
     like = Likes(user_id=self.user_id, message_id=self.message_id)
     like.id = 4000
     self.like_id = like.id
     db.session.add(like)
     db.session.commit()
Exemple #18
0
def like_message(message_id):
    """Like another users message"""

    if not g.user:
        flash("Access unauthorized.", "danger")
        return redirect("/")
    message = Message.query.get_or_404(message_id)

    if g.user.id == message.user.id:
        flash("Cannot like your own message", "danger")
        return redirect("/")

    #check if user already liked warble
    already_liked = Likes.query.filter(Likes.user_id == g.user.id).filter(
        Likes.message_id == message.id).first()

    if already_liked:
        flash("You have already liked that post", "danger")
        return redirect("/")

    like = Likes(user_id=g.user.id, message_id=message.id)

    db.session.add(like)
    db.session.commit()

    return jsonify(data=f""" <form
          action="/users/remove_like/{message.id}"
          method="post"
          id="messages-form"
        >
          <button class="btn btn-sm btn-danger">
            <i class="fas fa-heart"></i>
          </button>
        </form>""")
Exemple #19
0
def like_message(review_id):
    """Like/"cheers" a message."""


    if not g.user:
        flash("Access unauthorized.", "danger")
        return redirect("/")

    #prevent user from liking their own message
    # m = Message.query.get(message_id)
    # if m in g.user.messages:
    #     flash("You cannot like your own message.", "danger")
    #     return redirect ("/")
    
    #logic to unlike if the liked message is already an instance of the Likes class
    if Likes.query.filter_by(user_id=g.user.id, reviews_id=review_id).all():
        liked_msg=Likes.query.filter_by(user_id=g.user.id, reviews_id=review_id).one()
        db.session.delete(liked_msg)
        db.session.commit()
        return redirect('/')

    #like the message otherwise
    liked_msg=Likes(user_id=g.user.id, reviews_id=review_id)
    db.session.add(liked_msg)
    db.session.commit()

    return redirect("/")
Exemple #20
0
    def test_message_like_logged_in_already_liked(self):
        """A logged in user should be able to stop liking a message."""

        user1 = User(username="******", password="******", email="*****@*****.**")
        db.session.add(user1)
        db.session.commit()

        message = Message(text='Like me.', user_id=user1.id)
        db.session.add(message)
        db.session.commit()

        follow = Follows(user_being_followed_id=user1.id, user_following_id=self.testuser.id)
        db.session.add(follow)
        db.session.commit()

        like = Likes(user_id=self.testuser.id, message_id=message.id)
        db.session.add(like)
        db.session.commit()

        message_id = message.id
        with self.client as c:
            with c.session_transaction() as sess:
                sess[CURR_USER_KEY] = self.testuser.id

            resp = c.post(f'/users/add_like/{message_id}', follow_redirects=True)
            html = resp.get_data(as_text=True)

            self.assertEqual(resp.status_code, 200)
            self.assertNotIn('btn-primary', html)
Exemple #21
0
def add_like_message(message_id):
    # If user is logged in:
    #   If user_id & message_id is not in liked table (i.e., not already marked as liked)
    #   Add entry into Like_table
    #   Add flash message to indicate "Message was liked"

    # Else:
    #   remove entry from the Like table

    # Notes:  - Add logic to '/' template to reflect if message has been liked
    #         - In profile view run query to get count total of likes and pass that value to profile template view for display

    if not g.user:
        flash("Access unauthorized.", "danger")
        return redirect("/")
    else:
        like = Likes.query.filter_by(user_id=g.user.id,
                                     message_id=message_id).first()
        if like == None:
            print('The value returnded for Likes search whas none')
            like = Likes(user_id=g.user.id, message_id=message_id)
            db.session.add(like)
            db.session.commit()
        else:  # Record was unliked so remove entry in Likes table
            db.session.delete(like)
            db.session.commit()
    return redirect('/')
Exemple #22
0
def add_remove_like(message_id):
    """Add/Remove liked Warble to/from "likes" table"""

    like_ids = [like.id for like in g.user.likes]

    # Get the user_id from message_id
    user = db.session.query(
        Message.user_id).filter(Message.id == message_id).first()

    # un-like a warble
    if message_id in like_ids:
        like = Likes.query.filter_by(message_id=message_id,
                                     user_id=g.user.id).first()
        db.session.delete(like)
        db.session.commit()

        return redirect("/")

    # add a "like"
    else:
        # (a user may not "like" their own post)
        if user.user_id != g.user.id:
            like = Likes(user_id=g.user.id, message_id=message_id)

            db.session.add(like)
            db.session.commit()

        return redirect("/")
Exemple #23
0
def like_or_unlike_message(message_id):
    """ like or unlike a message """

    if not g.user:
        flash("Access unauthorized.", "danger")
        return redirect("/")

    message = Message.query.get_or_404(message_id)

    if g.user.id == message.user_id:

        return redirect(request.referrer)

    else:

        like = Likes.query.filter_by(message_id=message_id).filter_by(
            user_id=g.user.id).first()

        if like:
            db.session.delete(like)

        else:
            new_like = Likes(user_id=g.user.id, message_id=message_id)
            db.session.add(new_like)

    db.session.commit()

    return redirect(request.referrer)
Exemple #24
0
 def get(self):
     login = self.read_cookie('login')
     uid = None
     if login:
         uid = int(login)
         user = Users.get_by_id(uid)
     post_id = self.request.get("p")
     if post_id:
         if uid:
             post = Post.get_by_id(int(post_id))
             if int(uid) == int(post.user.key().id()):
                 #your own post
                 self.redirect("/blog/" + post_id + "?e=like_own")
             else:
                 likes = db.GqlQuery(
                     "select * from Likes where user = :1 and post = :2",
                     user.key(), post.key())
                 if likes.count() == 0:
                     new_like = Likes(post=post, user=user)
                     new_like.put()
                     self.redirect("/blog/" + str(post.key().id()))
                 else:
                     self.redirect("/blog/" + post_id + "?e=like_alrd")
         else:
             self.redirect("/blog/" + post_id + "?e=like_permission")
     else:
         self.redirect("/blog")
    def test_message_model(self):
        """test the Message model"""

        u1 = User.signup("test1", "*****@*****.**", "password", None)

        u2 = User.signup("test2", "*****@*****.**", "password", None)

        db.session.commit()

        u1_id = u1.id
        u2_id = u2.id

        msg1 = Message(text="msgtext", timestamp=None, user_id=u1_id)

        db.session.add(msg1)
        db.session.commit()

        msg1_id = msg1.id

        self.assertEqual(msg1.user, u1)
        self.assertEqual(len(u1.messages), 1)
        self.assertEqual(u1.messages[0].text, "msgtext")

        # test Likes model
        like = Likes(user_id=u2_id, message_id=msg1_id)

        db.session.add(like)
        db.session.commit()

        self.assertEqual(len(u2.likes), 1)
        self.assertEqual(u2.likes[0], msg1)

        # test function is_liked_by for User model
        self.assertEqual(msg1.is_liked_by(u2), True)
Exemple #26
0
def messages_add_like(message_id):
    """Add like to a message"""

    if not g.user:
        flash("Access unauthorized.", "danger")
        return redirect("/")

    msg = Message.query.get_or_404(message_id)

    if g.user.id == msg.user_id:
        flash("Can not like your own message!" , "danger")
        return redirect('/')

    if g.user.is_like(msg):
        # alrealy like this message, unlike it
        Likes.query.filter(Likes.user_id==g.user.id , Likes.message_id==msg.id).delete()
        db.session.commit()

        return redirect('/')

    # like this message
    like = Likes(user_id = g.user.id , message_id=message_id)

    db.session.add(like)
    db.session.commit()

    return redirect('/')
Exemple #27
0
def like_msg(message_id):
    """Like another users post."""

    if not g.user:
        flash("Access unauthorized.", "danger")
        return redirect("/")

    try:
        message = Message.query.get(message_id)

        if message.user_id == g.user.id:
            return redirect(request.referrer)

        like = Likes(user_id=g.user.id, message_id=message_id)
        db.session.add(like)
        db.session.commit()

        return redirect(request.referrer)

    except (IntegrityError, InvalidRequestError):
        db.session.rollback()
        liked_msg = Likes.query.get(message_id)
        db.session.delete(liked_msg)
        db.session.commit()

        return redirect(request.referrer)
Exemple #28
0
 def test_show_likes(self):
     with self.client as c:
         with c.session_transaction() as sess:
             sess[CURR_USER_KEY] = self.testuser.id
         
         """Create user and message to like"""
         tempuser = User.signup(username="******",
                                 email="*****@*****.**",
                                 password="******",
                                 image_url=None)
         db.session.add(tempuser)
         db.session.commit()
         user = db.session.query(User).filter_by(username="******").first()
         message = Message(text="Testmessage",user_id=user.id)
         db.session.add(message)
         db.session.commit()
         testmessage = db.session.query(Message).first()
         user = db.session.query(User).filter_by(username="******").first()
         templike = Likes(user_id=self.testuser.id, message_id=testmessage.id)
         db.session.add(templike)
         db.session.commit()
         testuser = db.session.query(User).filter_by(username='******').first()
         self.assertEqual(testuser.likes[0].id, message.id)
         resp = c.get(f"/users/{self.testuser.id}/likes")
         self.assertEqual(resp.status_code, 200) 
         html = resp.get_data(as_text=True)            
         self.assertIn('<div class="message-area">', html)
def create_like(current_user, post_id):
    userID = current_user.userID
    postID = post_id
    like = Likes(userID = userID, postID = postID)
    db.session.add(like)
    db.session.commit(like)
    return jsonify ({'message': 'You liked a user post'})
Exemple #30
0
    def post(self):
        cookie_user = self.get_user_from_cookie()
        if cookie_user:
            postID = self.request.get('postID')
            post_obj = Post.get_by_id(int(postID))
            like_obj = Likes.query(Likes.post == post_obj.key).get()

            if post_obj.user == cookie_user.key:
                self.write(json.dumps(({'like_count': -1})))
            else:
                if like_obj:
                    liked_by = like_obj.user_id
                    for u_id in liked_by:
                        if u_id == cookie_user.key.id():
                            self.write(json.dumps(({'like_count': -2})))
                            return
                    like_obj.like_count += 1
                    liked_by.append(cookie_user.key.id())
                    like_obj.put()
                    self.write(
                        json.dumps(({
                            'like_count': like_obj.like_count
                        })))
                else:
                    like_obj = Likes(post=post_obj.key, like_count=1)
                    like_obj.user_id.append(cookie_user.key.id())
                    like_obj.put()
                    time.sleep(0.2)
                    self.write(
                        json.dumps(({
                            'like_count': like_obj.like_count
                        })))
        else:
            return None