Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)