Ejemplo n.º 1
0
def like(message_id):
    message = Message.getMessage(message_id)

    if not message:
        abort(404)

    if message and message.parent:
        abort(404)

    from_user = User.getByName(session.get('username'))

    # check if first like or not
    existing_like = Database.find('messages', {
                                                "parent": message_id,
                                                "from_user": from_user.id,
                                                "message_type": MESSAGE_TYPE.get(LIKE)
                                            }).count()

    if not existing_like:
        # write like
        like_ = Message(
            from_user=from_user.id,
            to_user=message.from_user,
            parent=message_id,
            message_type=MESSAGE_TYPE.get(LIKE)
        )

        like_.save_database()

    return redirect(url_for('feed_blueprint.comment', message_id=message.id))
Ejemplo n.º 2
0
 def get_friends(cls, user, rel_type, status):
     friends_records = Database.find('relationships', {
         "from_user": user,
         "rel_type": rel_type,
         "status": status
     })
     return [cls(**friend) for friend in friends_records]
Ejemplo n.º 3
0
 def get_feed(cls, user):
     feeds = Database.find('feeds', {
         "user": user
     }).sort("createdAt", -1).limit(10)
     feeds = [cls(**feed) for feed in feeds]
     for feed in feeds:
         feed.message = Message.getMessage(feed.message)
     return feeds
 def SearchByKeyword(cls, keyword):
     return [
         cls(**article)
         for article in db.find(ArticleConstants.Collection,
                                {"text": {
                                    "$regex": f"{keyword}"
                                }})
     ]
Ejemplo n.º 5
0
    def getMessages(cls, user, offset=0, limit=10):
        profile_messages = Database.find(
            'messages', {
                "message_type": MESSAGE_TYPE.get(POST),
                "$or": [{
                    "from_user": user
                }, {
                    "to_user": user
                }]
            }).sort("createdAt", -1).skip(offset).limit(limit)

        return [cls(**message) for message in profile_messages]
Ejemplo n.º 6
0
 def likes(self):
     likes = Database.find('messages', {
         "parent": self.id,
         "message_type": MESSAGE_TYPE.get(LIKE)
     }).sort("createdAt", -1)
     return [Message(**like) for like in likes]
Ejemplo n.º 7
0
 def comments(self):
     comments = Database.find('messages', {
         "parent": self.id,
         "message_type": MESSAGE_TYPE.get(COMMENT)
     }).sort("createdAt", -1)
     return [Message(**comment) for comment in comments]
 def FetchAllArticles(cls):
     return [
         cls(**article_data)
         for article_data in db.find(ArticleConstants.Collection, {})
     ]
Ejemplo n.º 9
0
    def test_friends_operations(self):
        """
            Registeration:  User 1 & User 2
        """
        user_1 = self.getUser1()
        self.app.post("/register", data=user_1, follow_redirects=True)
        user_1 = User.getByName(username=user_1['username'])
        code = user_1.change_configuration.get('confirmation_code')
        rv = self.app.get('/confirm/' + user_1.username + '/' + code)
        assert "Your email has been confirmed" in str(rv.data)

        user_2 = self.getUser2()
        self.app.post("/register", data=user_2, follow_redirects=True)
        user_2 = User.getByName(username=user_2['username'])
        code = user_2.change_configuration.get('confirmation_code')
        rv = self.app.get('/confirm/' + user_2.username + '/' + code)
        assert "Your email has been confirmed" in str(rv.data)

        """
            Login: User 1
        """

        self.app.post('/login', data=dict(
            username=user_1.username,
            password=self.getUser1()['password']
        ))

        with self.app as c:
            c.get('/')
            assert session.get('username') == user_1.username

        """
            Add User 2 as Friend
        """
        self.app.get('/add_friend/' + user_2.username)

        """
            Login as User 2
        """

        self.app.post('/login', data=dict(
            username=user_2.username,
            password=self.getUser2()['password']
        ))

        with self.app as c:
            c.get('/')
            assert session.get('username') == user_2.username

        """
            Check the status of relationship between User 1, User 2.
        """

        status = Relationship.get_relationship_status(user_1.id, user_2.id)
        assert status == "FRIENDS_PENDING"

        """
             Accept Friendship from User 1.
        """

        self.app.get('/add_friend/' + user_1.username)

        """
            Check that the relationship between User 1 and  User 2 has been APPROVED
        """

        status = Relationship.get_relationship_status(user_1.id, user_2.id)
        assert status == "FRIENDS_APPROVED"

        """
            User 2 Unfriend User 1
        """

        self.app.get('/remove_friend/' + user_1.username)

        assert Relationship.get_relationship(user_2.id, user_1.id) is None

        """
            Check that no relationship exist
        """

        assert Database.find('relationships', {}).retrieved == 0