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))
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]
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}" }}) ]
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]
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]
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, {}) ]
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