def add_new_registration():
    user_name = request.form['new_registration']
    registration_date = datetime.today().strftime("%Y-%m-%d")
    query = """INSERT INTO users (user_name, registration_date) VALUES ('%s', '%s')""" % (
        user_name, registration_date)
    ui.handle_query(query)
    return redirect('/')
def user_page(user_id):
    user_name = ui.handle_query("""SELECT user_name FROM users WHERE id=%s""" %
                                (user_id))
    question_list = ui.handle_query("""SELECT id, title
                                       FROM question
                                       WHERE users_id='%s';""" % (user_id))
    answer_list = ui.handle_query("""SELECT a.message, q.id
                                     FROM answer a
                                     LEFT JOIN question q ON a.question_id=q.id
                                     WHERE a.users_id=%s;""" % (user_id))
    comment_list = ui.handle_query("""SELECT c.message, q.id
                                     FROM comment c
                                     LEFT JOIN question q ON c.question_id=q.id
                                     WHERE c.users_id=%s AND c.question_id IS NOT NULL
                                     UNION
                                     SELECT c.message, q.id
                                     FROM comment c
                                     LEFT JOIN answer a ON a.id=c.answer_id
                                     LEFT JOIN question q ON a.question_id=q.id
                                     WHERE c.users_id=%s AND c.answer_id IS NOT NULL;"""
                                   % (user_id, user_id))
    return render_template('user_page.html',
                           user_name=user_name,
                           question_list=question_list,
                           answer_list=answer_list,
                           comment_list=comment_list)
def add_new_answer():
    new_answer_user = request.form['new_answer_user']
    user_id = ui.handle_query(
        """SELECT id FROM users WHERE user_name='{}';""".format(
            new_answer_user))
    ui.handle_query(
        """INSERT INTO answer (submission_time, vote_number, question_id, message, users_id)
                    VALUES ('{}', {}, {}, '{}', {});""".format(
            str(datetime.now())[:-7], 0, request.form['question_id'],
            request.form['new_answer_message'], user_id[0][0]))
    return redirect('/question/' + request.form["question_id"])
def create_new_question():
    new_question_user = request.form['new_question_user']
    user_id = ui.handle_query(
        """SELECT id FROM users WHERE user_name='{}';""".format(
            new_question_user))
    ui.handle_query(
        """INSERT INTO question (submission_time, view_number, vote_number, title, message, users_id) 
                    VALUES ('{}', {}, {}, '{}', '{}', {});""".format(
            str(datetime.now())[:-7], 0, 0, request.form['new_question_title'],
            request.form['new_question_message'], user_id[0][0]))
    return redirect('/')
def add_new_question_comment():
    new_question_comment_user = request.form['new_question_comment_user']
    user_id = ui.handle_query(
        """SELECT id FROM users WHERE user_name='{}';""".format(
            new_question_comment_user))
    ui.handle_query(
        """INSERT INTO comment (question_id, answer_id, message, submission_time, users_id)
                    VALUES ({}, {}, '{}', '{}', {});""".format(
            request.form['question_id'], 'NULL',
            request.form['new_comment_message'],
            str(datetime.now())[:-7], user_id[0][0]))
    return redirect('/question/' + request.form["question_id"])
def add_new_answer_comment():
    new_answer_comment_user = request.form['new_answer_comment_user']
    user_id = ui.handle_query(
        """SELECT id FROM users WHERE user_name='{}';""".format(
            new_answer_comment_user))
    ui.handle_query(
        """INSERT INTO comment (answer_id, message, submission_time, users_id)
                    VALUES ({}, '{}', '{}', {});""".format(
            request.form['answer_id'], request.form['new_comment_message'],
            str(datetime.now())[:-7], user_id[0][0]))
    question_id = ui.get_record_from_sql_db(
        'answer', 'id=%s' % (request.form["answer_id"]))[0][3]
    return redirect('/question/' + str(question_id))
def vote_question_up():
    id = request.args.get('id')
    question_list = ui.get_record_from_sql_db('question', "id=%s" % (id))
    vote_number = question_list[0][3] + 1
    ui.update_record('question', "vote_number=%s" % (vote_number),
                     "id=%s" % (id))
    query = """SELECT users_id \
            FROM question
            WHERE id = %s""" % (id)
    user_id = ui.handle_query(query)[0][0]
    query = """UPDATE users \
            SET reputation = reputation + 5 \
            WHERE id = %s""" % user_id
    ui.handle_query(query)
    return redirect('/')
def new_answer_comment(answer_id):
    users = ui.handle_query(
        """SELECT user_name FROM users ORDER BY user_name;""")
    return render_template('new_comment.html',
                           answer_id=answer_id,
                           comment_type="answer",
                           users=users)
def new_question_comment(question_id):
    users = ui.handle_query(
        """SELECT user_name FROM users ORDER BY user_name;""")
    return render_template('new_comment.html',
                           question_id=question_id,
                           comment_type="question",
                           users=users)
def vote_answer_down():
    id = request.args.get('id')
    answer_list = ui.get_record_from_sql_db('answer', "id=%s" % (id))
    vote_number = answer_list[0][2] - 1
    ui.update_record('answer', "vote_number=%s" % (vote_number),
                     "id=%s" % (id))
    question_id = answer_list[0][3]
    query = """SELECT users_id \
            FROM answer
            WHERE id = %s""" % (id)
    user_id = ui.handle_query(query)[0][0]
    query = """UPDATE users \
            SET reputation = reputation - 2 \
            WHERE id = %s""" % user_id
    ui.handle_query(query)
    return display_question(question_id, count_view=False)
def tags():
    tag_list = ui.handle_query("""SELECT t.id, t.name, COUNT(qt.question_id)
                                  FROM tag t
                                  LEFT JOIN question_tag qt
                                  ON qt.tag_id=t.id
                                  GROUP BY t.id
                                  ORDER BY COUNT(qt.question_id) DESC;""")
    return render_template('tag_page.html', tag_list=tag_list)
def new_answer(question_id):
    users = ui.handle_query(
        """SELECT user_name FROM users ORDER BY user_name;""")
    return render_template('new_answer.html',
                           question_id=question_id,
                           users=users)
def list_users():
    query = """SELECT * \
            FROM users \
            ORDER BY id"""
    user_list = ui.handle_query(query)
    return render_template('list_users.html', user_list=user_list)
def new_question():
    users = ui.handle_query(
        """SELECT user_name FROM users ORDER BY user_name;""")
    return render_template('new_question.html', users=users)