def favoriteQuestion(user): # Question ID as parameter & userID from header questionId = request.args.get('id') userId = user["_id"] # Converting str into Object ID questionId = ObjectId(questionId) # Getting the user adding the favorite questions to list user = User({"_id": userId}) username = user.data()['username'] status, message = False, "" curFavoriteQuestions = user.data().get('favoriteQuestions') curFavoriteQuestions = list( curFavoriteQuestions) if curFavoriteQuestions else [] question = Question({"_id": questionId}) if questionId not in curFavoriteQuestions: question.updateFavCount() curFavoriteQuestions.append(questionId) status = True message = f"{username} favorited a question" # Creating & inserting a post postObj = { "userId": userId, "message": message, "questionId": str(questionId), "questionTitle": str(question.data()['title']) } validation = validatePost(postObj) # Invalid if validation['success'] is False: return jsonify(validation) post = Post(postObj) post.insert_one() else: question.updateFavCount(False) curFavoriteQuestions.remove(questionId) status = False message = f"{username} unfavorited a question" setattr(user, 'favoriteQuestions', curFavoriteQuestions) # Updating user.update_one(user.data()) # Return the response return jsonify({ 'success': True, 'result': status, 'message': message, 'question': question.data() }), 200
def getQuestion(user): # ID as parameter questionId = request.args.get('id') userId = user["_id"] user = User({"_id": userId}) result = None try: question = Question({"_id": questionId}) question.incrementViewCount() result = question.data() except Exception as e: print("NO SUCH QUESTION ID") raise e # Favorite questions of the user favoriteQuestions = user.data().get('favoriteQuestions') isFavorite = ObjectId(questionId) in favoriteQuestions # YouTube search if result and result.get('labels'): youtubeResults = [] try: searchKey = f"{result['title']} {result['source']['reference']} solution" youtubeResults = searchByKey(searchKey, 5) youtubeVideos = youtubeResults.get('videos') youtubeVideos.reverse() result['youtubeVideos'] = youtubeVideos except Exception as e: print("NO YOUTUBE VIDEO IS FOUND") status = result is not None # Return the response return jsonify({ 'success': status, "question": result, "favorite": isFavorite }), 200