def add_fav(user_id): qdata = json.loads(request.values.get('data')) quoteId = qdata['quoteId'] try: user = User.query.filter_by(id = user_id).first() if not user: raise ServerException(ErrorMessages.USER_NOT_FOUND, \ ServerException.ER_BAD_USER) userId = user.id quote = Quote.query.filter_by(id = quoteId).first() if not quote or quote.deleted: raise ServerException(ErrorMessages.QUOTE_NOT_FOUND, \ ServerException.ER_BAD_QUOTE) ## see if the favorite is already logged favorite = Favorite.query.filter_by(quote_id = quoteId, user_id = userId).first() if favorite: return format_response(ErrorMessages.FAV_ALREADY_EXISTS); favorite = Favorite(quote) user.favs.append(favorite) if user.id != quote.reporter_id: add_notification(user, quote, 'fav', quote.reporter_id) if user.id != quote.source_id: add_notification(user, quote, 'fav', quote.source_id) db.session.commit() return format_response(SuccessMessages.FAV_ADDED) except ServerException as e: return format_response(None, e)
def add_comment(user_id): qdata = json.loads(request.values.get('data')) quoteId = qdata['quoteId'] content = qdata['comment'] try: user = User.query.filter_by(id = user_id).first() if not user: raise ServerException(ErrorMessages.USER_NOT_FOUND, \ ServerException.ER_BAD_USER) quote = Quote.query.filter_by(id = quoteId).first() if not quote or quote.deleted: raise ServerException(ErrorMessages.QUOTE_NOT_FOUND, \ ServerException.ER_BAD_QUOTE) comment = Comment(user.id, quote.id, content) db.session.add(comment) if user.id != quote.reporter_id: add_notification(user, quote, 'comment', quote.reporter_id) if user.id != quote.source_id: add_notification(user, quote, 'comment', quote.source_id) db.session.commit() return format_response(SuccessMessages.COMMENT_ADDED) except ServerException as e: return format_response(None, e)
def add_quote(user_id): qdata = json.loads(request.values.get("data")) sourceFbid = qdata["sourceFbid"] reporterFbid = qdata["reporterFbid"] content = qdata["quote"] location = qdata.get("location") location_lat = qdata.get("location_lat") location_long = qdata.get("location_long") try: source = User.query.filter_by(fbid=sourceFbid).first() reporter = User.query.filter_by(fbid=reporterFbid).first() if not source: raise ServerException(ErrorMessages.SOURCE_NOT_FOUND, ServerException.ER_BAD_USER) if not reporter: raise ServerException(ErrorMessages.REPORTER_NOT_FOUND, ServerException.ER_BAD_USER) if source.id == reporter.id: raise ServerException(ErrorMessages.SAME_SOURCE_REPORTER, ServerException.ER_BAD_QUOTE) quote = Quote(source.id, reporter.id, content, location, location_lat, location_long, False) # add the reporter as the first "echoer" # this creates a dummy entry in the echoes table that corresponds to the original quote, with echo.user_id == quote.reporter_id # this makes it easier to fetch quotes and echoes chronologically in get_quotes quote.echoers.append(reporter) db.session.add(quote) db.session.flush() # so we can get quote id add_notification(reporter, quote, "quote", source.id) db.session.commit() echo = Echo.query.filter_by(quote_id=quote.id).first() return json.dumps({"echo_id": echo.id}) except ServerException as e: return format_response(None, e)
def add_echo(user_id): qdata = json.loads(request.values.get('data')) quoteId = qdata['quoteId'] try: user = User.query.filter_by(id = user_id).first() if not user: raise ServerException(ErrorMessages.USER_NOT_FOUND, \ ServerException.ER_BAD_USER) quote = Quote.query.filter_by(id = quoteId).first() if not quote or quote.deleted: raise ServerException(ErrorMessages.QUOTE_NOT_FOUND, \ ServerException.ER_BAD_QUOTE) if user not in quote.echoers and user.id != quote.reporter.id and user.id != quote.source.id: quote.echoers.append(user) add_notification(user, quote, 'echo', quote.reporter_id) add_notification(user, quote, 'echo', quote.source_id) db.session.commit() return format_response(SuccessMessages.ECHO_ADDED) except ServerException as e: return format_response(None, e)