Пример #1
0
def show_answers(question_id,
                 answer_id=None,
                 vote=None,
                 sorted_by=None,
                 direction=0):

    given_question = data_manager.get_from_table_condition(
        "question", {"id": question_id})[0]
    answers = sorted(data_manager.get_from_table_condition(
        "answer", {"question_id": question_id}),
                     key=lambda i: i["submission_time"],
                     reverse=True)
    question_title = given_question["title"]
    question_message = given_question["message"]

    if vote:
        util.check_if_vote("answer", answer_id, vote)
        return redirect("/vote_given/" + question_id, code=303)

    if sorted_by in ["submission_time", "vote_number"]:
        answers.sort(key=lambda item: (item[sorted_by]), reverse=direction)
    elif sorted_by:
        answers.sort(key=lambda item: item[sorted_by], reverse=direction)

    return render_template('questions.html',
                           question_id=question_id,
                           question_title=question_title,
                           question_message=question_message,
                           answers=util.change_time_format(answers),
                           direction=direction)
Пример #2
0
def delete(question_id,
           confirmation=None,
           answer_id=None,
           status=None,
           question_tag_id=None):

    if confirmation:
        if answer_id:
            answer_sql_conditional = {"id": int(answer_id)}
            data_manager.delete_data_in_table("answer", answer_sql_conditional)
        elif question_tag_id:
            pass

        else:
            answers_id_with_q_id = data_manager.get_from_table_condition(
                "answer", {"question_id": question_id}, "id")
            for single_answer_id in answers_id_with_q_id:
                data_manager.delete_data_in_table("comment", single_answer_id)
            data_manager.delete_data_in_table(
                "comment", {"question_id": int(question_id)})
            data_manager.delete_data_in_table(
                "answer", {"question_id": int(question_id)})
            data_manager.delete_data_in_table(
                "question_tag", {"question_id": int(question_id)})
            data_manager.delete_data_in_table("question",
                                              {"id": int(question_id)})

        status = True

    return render_template("delete.html",
                           question_id=question_id,
                           answer_id=answer_id,
                           status=status)
Пример #3
0
def show_question(question_id):
    given_question = data_manager.get_from_table_condition(
        "question", {"id": question_id})[0]
    answers = sorted(data_manager.get_from_table_condition(
        "answer", {"question_id": question_id}),
                     key=lambda i: i["submission_time"],
                     reverse=True)
    data_manager.update_data_in_table(
        "question", {"view_number":
                     (given_question["view_number"] + 1)}, {"id": question_id})
    question_title = given_question["title"]
    question_message = given_question["message"]

    return render_template('questions.html',
                           question_id=question_id,
                           question_title=question_title,
                           question_message=question_message,
                           answers=util.change_time_format(answers))
Пример #4
0
def check_if_vote(table,  id, vote):

    sql_condition = {"id": int(id)}
    row_to_edit = data_manager.get_from_table_condition(table, sql_condition)[0]
    votes_no = int(row_to_edit["vote_number"])
    if vote == "vote_down":
        votes_no -= 1
    elif vote == "vote_up":
        votes_no += 1
    data_to_update = {"vote_number" : str(votes_no)}
    data_manager.update_data_in_table(table, data_to_update, sql_condition)
Пример #5
0
def add_answer(question_id, answer_id=None, answer_message=None):

    given_question = data_manager.get_from_table_condition(
        "question", {"id": question_id})[0]
    question_title = given_question["title"]

    if request.method == 'POST':
        if answer_id:
            data_to_save = {
                "message":
                util.proper_capitalization(request.form['answer_m']),
                'submission_time': datetime.now()
            }
            data_manager.update_data_in_table("answer", data_to_save,
                                              {"id": answer_id})
        else:
            data_to_save = ({
                'submission_time':
                datetime.now(),
                'vote_number':
                '0',
                'question_id':
                question_id,
                'message':
                util.proper_capitalization(request.form['answer_m'])
            })

            data_manager.insert_data_to_table("answer", data_to_save)

        return redirect('/questions/' + question_id)

    if answer_id:
        answer_message = data_manager.get_from_table_condition(
            "answer", {"id": answer_id})[0]["message"]

    return render_template('answer.html',
                           answer_id=answer_id,
                           answer_message=answer_message,
                           question_title=question_title)
Пример #6
0
def add_question(message=None, title=None, question_id=None, table="question"):

    if request.method == 'GET' and question_id:
        single_row = data_manager.get_from_table_condition(
            "question", {"id": question_id})[0]
        title = single_row["title"]
        message = single_row["message"]
    elif request.method == 'POST':
        if not question_id:
            data_to_save = {
                'submission_time': datetime.now(),
                'view_number': 0,
                'vote_number': 0,
                'message':
                util.proper_capitalization(request.form['question_m']),
                'title': util.proper_capitalization(request.form['title_m']),
                'image': None
            }

            data_manager.insert_data_to_table(table, data_to_save)
        else:
            data_to_save = {
                'message':
                util.proper_capitalization(request.form['question_m']),
                'submission_time': datetime.now(),
                'title': util.proper_capitalization(request.form['title_m'])
            }

            sql_conditions = {'id': question_id}
            data_manager.update_data_in_table(table, data_to_save,
                                              sql_conditions)

        return redirect('/list')

    return render_template('note.html',
                           message=message,
                           title=title,
                           question_id=question_id)
Пример #7
0
def search_for_questions():
    message = title = ("%" + request.args.get("sphrase") + "%").lower()
    question_id_from_answers = data_manager.get_from_table_condition_like(
        "answer", {"message": message}, "question_id AS id")
    question_id_from_questions = data_manager.get_from_table_condition_like(
        "question", {
            "message": message,
            "title": title
        }, "id")
    all_question_id = question_id_from_questions + question_id_from_answers

    if all_question_id:
        search_result = []
        for one_question_id in all_question_id:
            search_result.append(
                data_manager.get_from_table_condition("question",
                                                      one_question_id)[0])
        return render_template(
            "/list.html",
            sorted_questions=util.change_time_format(search_result))
    else:

        return render_template(
            "/list.html", message="There is no record matching your criteria")