Beispiel #1
0
def add_user(username, topic_id, dbconn):
    logging.info("Adding user %s to topic %s" % (username, topic_id))
    try:
        cursor = dbconn.cursor()
        user_id = user.user_id_from_username(username, dbconn)
    except MySQLdb.Error as e:
        logging.error("MySQL error in add_user 1: " + e[1])
        return Status.DBError

    if type(user_id) == Status.NoSuchUser:
        return user_id
    findSQL = "SELECT * FROM topic_users WHERE user_id='%s' AND topic_id='%s'" % (user_id, topic_id)

    try:
        result = cursor.execute(findSQL)
    except MySQLdb.Error as e:
        logging.error("MySQL error in add_user 2: " + e[1])
        return Status.DBError

    if result == 1:
        logging.info("User already in topic")
        return Status.UserAlreadyInTopic

    insertSQL = "INSERT INTO topic_users (topic_id, user_id) VALUES('%s', '%s')" % (topic_id, user_id)
    try:
        result = cursor.execute(insertSQL)
    except MySQLdb.Error as e:
        logging.error("MySQL error in add_user 3: " + e[1])
        return Status.DBError

    if result != 1:
        logging.error("Found an oddity in add_user: couldn't insert!")
        return Status.CouldNotAddUser

    updateSQL = "UPDATE topics SET num_users=(num_users+1) where topic_id='%s'" % topic_id
    try:
        result = cursor.execute(updateSQL)
        logging.debug("just ran %s: %s" % (updateSQL, result))
    except MySQLdb.Error as e:
        logging.error("MySQL error in add_user 4: " + e[1])
        return Status.CouldNotIncrementUserCount

    logging.info("User added to topic")
    return Status.UserAddedToTopic
Beispiel #2
0
def post_message(topic_id, username, message, dbconn):
    logging.info('posting message on topic %s from user %s' % (topic_id, username))
    username = MySQLdb.escape_string(username)
    try:
        cursor = dbconn.cursor()
        user_id = user.user_id_from_username(username, dbconn)
    except MySQLdb.Error as e:
        logging.error("MySQL error in add_user 1: " + e[1])
        return Status.DBError

    messageSQL = "INSERT INTO messages(user_id, topic_id, message, timestamp) VALUES ('%s', '%s', '%s', NOW())"
    messageSQL %= (user_id, topic_id, MySQLdb.escape_string(message))

    try:
        cursor.execute(messageSQL)
        return Status.SuccessfulPost
    except MySQLdb.Error as e:
        logging.error("MySQL error on message post: " + e[1])
        return Status.DBError
Beispiel #3
0
def user_in_topic(username, topic_id, dbconn):
    try:
        cursor = dbconn.cursor()
        user_id = user.user_id_from_username(username, dbconn)
    except MySQLdb.Error as e:
        logging.error("MySQL error in add_user 1: " + e[1])
        return Status.DBError

    findSQL = "SELECT user_id FROM topic_users WHERE user_id='%s' AND topic_id='%s'" % (user_id, topic_id)

    try:
        result = cursor.execute(findSQL)
    except MySQLdb.Error as e:
        logging.error("MySQL error in user_in_topic: " + e[1])
        return Status.DBError

    if result > 0:
        if result > 1:
            logging.warn('There is a duplicate record for a "topic_user"')
        return Status.UserAlreadyInTopic
    else:
        return Status.UserNotInTopic