示例#1
0
def route_edit_comment(comment_id):
    comment = data_manager.get_comment_by_id(comment_id)
    if request.method == 'GET':
        question = None
        answer = None
        if comment['question_id']:
            question = data_manager.get_question_by_id(comment['question_id'])
        else:
            answer = data_manager.get_answer_by_id(comment['answer_id'])
        return render_template('comment.html',
                               question=question,
                               answer=answer,
                               comment=comment)
    elif request.method == 'POST':

        values = [
            comment_id, request.form['message'], comment['edited_count'] + 1
        ]
        data_manager.update_comment(values)

        if comment['question_id']:
            question_id = comment['question_id']
        else:
            answer = data_manager.get_answer_by_id(comment['answer_id'])
            question_id = answer['question_id']

        return redirect(f'/question/{question_id}')
示例#2
0
def edit_answer(answer_id):
    if request.method == "GET":
        answer = data_manager.get_answer_by_id(answer_id)
        return render_template('edit_answer.html', answer=answer)

    question_id = data_manager.get_answer_by_id(answer_id)['question_id']
    edited_answer_data = {
        'message': request.form.get('message'),
        'image': request.form.get('image')
    }
    data_manager.edit_answer(answer_id, edited_answer_data)
    return redirect(url_for('display_question', question_id=question_id))
示例#3
0
def route_edit_answer(answer_id):
    question_id = data_manager.get_question_id_by_answer_id(answer_id)
    answer = data_manager.get_answer_by_id(answer_id)
    if request.method == 'POST':
        image = ''

        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        file = request.files['file']
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            flash('No selected file')
            return redirect(request.url)
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))

            image = filename

        values = [answer_id, request.form['message'], image]

        data_manager.update_answer(values)
        return redirect(f'/question/{question_id}')
    else:
        question = data_manager.get_question_by_id(question_id)
        return render_template('answer.html',
                               id=answer_id,
                               question=question,
                               answer=answer)
示例#4
0
def route_add_comment(what, id_):
    if request.method == 'GET':
        question = None
        answer = None
        if what == 'question':
            question = data_manager.get_question_by_id(id_)
        elif what == 'answer':
            answer = data_manager.get_answer_by_id(id_)
        return render_template('comment.html',
                               question=question,
                               answer=answer,
                               comment=None)
    elif request.method == 'POST':
        answer_id = None
        question_id = None
        if what == 'question':
            question_id = id_
        elif what == 'answer':
            answer_id = id_

        values = [
            question_id, answer_id, request.form['message'],
            util.get_timestamp(), '0'
        ]

        data_manager.add_comment(values)

        if answer_id:
            question_id = data_manager.get_question_id_by_answer_id(answer_id)

        return redirect(f'/question/{question_id}')
示例#5
0
def add_new_comment_to_answer(answer_id: int):
    question_id = data_manager.get_question_id_by_answer_id(answer_id)
    question_id = question_id[0].get('id')
    user_name = data_manager.get_answers_for_questions(question_id)
    answer_data = data_manager.get_answer_by_id(answer_id)
    question_data = data_manager.get_question_by_id(question_id)
    answer_comment = data_manager.get_comments_for_answer(answer_id)
    if request.method == 'POST':
        if 'username' in session:
            username = session['username']
            user_id = data_manager.get_user_id_by_name(username)
            site_input = [
                answer_id, request.form['comment'], 'answer',
                user_id[0].get('id')
            ]
            data_manager.add_comment(site_input)
        else:
            site_input = [answer_id, request.form['comment'], 'answer', None]
            data_manager.add_comment(site_input)
        return redirect(
            url_for('add_new_comment_to_answer', answer_id=answer_id))

    return render_template('add_answer_comment.html',
                           answer_data=answer_data,
                           answer_comment=answer_comment,
                           question_id=question_id,
                           question_data=question_data,
                           user_name=user_name)
示例#6
0
def edit_answer(question_id, answer_id):
    data_manager.get_question_by_id(question_id)
    if request.method == 'GET':
        answer = data_manager.get_answer_by_id(answer_id)
        return render_template('edit_answer.html', answer=answer)
    data_manager.edit_answer(answer_id, request.form['message'])
    return redirect('/')
示例#7
0
def edit_answer(id):
    if request.method == 'GET':
        answer = data_manager.get_answer_by_id(id)
        return render_template('new_answer.html', answer=answer, edit=True)
    else:
        answer = request.form.to_dict()
        data_manager.update_answer(answer)
        return redirect('question/{}'.format(answer['question_id']))
示例#8
0
def answer_page(question_id, answer_id):
    answers = data_manager.get_answer_by_id(question_id)
    all_comment = data_manager.get_comments(answer_id)
    comments = []
    for comment in all_comment:
        if comment['answer_id'] == answer_id:
            comments.append(comment)
    return render_template("answer.html", question_id=question_id, answer_id=answer_id, answers=answers, comments=comments)
def edit_answer(answer_id):
    answer_to_edit = data_manager.get_answer_by_id(answer_id)
    dict_of_question = data_manager.get_question_by_id(answer_to_edit["question_id"])
    user_action = "Edit"
    form_action = url_for("save_edited_answer")
    return render_template('new_answer.html', dict_of_question=dict_of_question,
                           dict_of_answer=answer_to_edit, user_action=user_action,
                           form_action=form_action)
示例#10
0
def edit_answer(answer_id):
    answer = data_manager.get_answer_by_id(answer_id)
    if request.method == 'GET':
        return render_template('edit_answer.html', answer=answer)

    answer['message'] = request.form['message']
    data_manager.edit_answer(answer)
    return redirect(
        url_for('detail_question', question_id=answer['question_id']))
示例#11
0
def display_question(question_id):
    questions = data_manager.get_question_by_id(question_id)
    answers = data_manager.get_answer_by_id(question_id)
    comments = data_manager.get_comments(question_id)
    tag = data_manager.get_tagz(question_id)
    user_id = session.get('id', None)
    question_user_id = [question['user_id'] for question in questions]
    return render_template("display_question.html", questions=questions, answers=answers,
                           question_id=question_id, comments=comments, tag=tag, user_id=user_id, question_user_id=question_user_id)
def downvote_answer():
    answer_id = request.form["answer_id"]
    data_manager.add_answer_downvote(answer_id)
    answer = data_manager.get_answer_by_id(answer_id)
    answer_author = data_manager.get_user_email_by_id(answer['user_id'])
    data_manager.minus_reputation_2(answer_author)
    question_id = data_manager.get_question_id_for_answer(answer_id)
    url_to_question = url_for("get_question_details", question_id=question_id)
    return redirect(url_to_question)
示例#13
0
def route_remove_comment(comment_id):
    comment = data_manager.get_comment_by_id(comment_id)
    if comment['question_id']:
        question_id = comment['question_id']
    else:
        answer = data_manager.get_answer_by_id(comment['answer_id'])
        question_id = answer['question_id']
    data_manager.remove_record('comment', comment_id)
    return redirect(f'/question/{question_id}')
示例#14
0
def delete_comment(comment_id):
    comment = data_manager.get_table_by_id(comment_id, "comment")
    question_id = comment['question_id']
    if question_id is None:
        question_id = data_manager.get_answer_by_id(comment['answer_id'])['question_id']

    data_manager.delete_from_table_by_id(comment_id, "comment")

    return redirect('/question/' + str(question_id))
示例#15
0
def update_answer(answer_id):
    answer = data_manager.get_answer_by_id(answer_id)
    if request.method == 'GET':
        return render_template('add_answer.html',
                               answer=answer.get('message'),
                               answer_id=answer.get('id'))
    elif request.method == 'POST':
        data_manager.update_answer(request.form.get('message'), answer_id)
        return redirect(
            url_for('question_details', question_id=answer.get('question_id')))
示例#16
0
def add_answer(question_id, answer_id):
    question_id = int(question_id)
    answer_id = int(answer_id)
    if request.method == 'POST':
        answer = request.form['answer']
        if answer_id == -1:
            data_manager.save_answer(answer, question_id)
        else:
            data_manager.update_answer(answer, answer_id)
        return redirect(url_for('route_question', question_id=question_id))

    try:
        answer = data_manager.get_answer_by_id(answer_id)[0]
    except IndexError:
        answer = data_manager.get_answer_by_id(answer_id)
    return render_template('add_answer.html',
                           answer=answer,
                           question_id=question_id,
                           answer_id=answer_id)
示例#17
0
def vote(id, direction, question):
    if question == 'yes':
        reputation_id_question = data_manager.get_user_id_question(id)
        data_manager.voting(id, True, direction, reputation_id_question)
        return redirect('/question/{}'.format(id))
    else:
        reputation_id_answer = data_manager.get_user_id_answer(id)
        data_manager.voting(id, False, direction, reputation_id_answer)
        answer = data_manager.get_answer_by_id(id)
        return redirect('/question/{}'.format(answer[0]['question_id']))
示例#18
0
def route_expand_question(question_id):
    question = dm.get_question_by_id(question_id)[0]
    answers_by_question_id = dm.get_answer_by_id(question_id)
    comments_to_question = dm.get_all_comments_to_a_question(question_id)
    question["view_number"] = question["view_number"] + 1
    dm.update_view_count("question", question)
    return render_template('question.html',
                           question=question,
                           answers=answers_by_question_id,
                           question_id=question_id,
                           comments=comments_to_question)
示例#19
0
def add_comment_to_answer(answer_id=None, question_id=None):
    if request.method == 'POST':
        data_manager.add_comment(
            create_new_comment_data(answer_id, question_id))
        return redirect(
            url_for('question_details',
                    question_id=request.form.get('redirect_id')))
    elif request.method == 'GET':
        answer = data_manager.get_answer_by_id(answer_id)
        return render_template('add_answer_comment.html',
                               answer_id=answer_id,
                               redirect_id=answer.get('question_id'))
示例#20
0
def edit_answer(answer_id: int):
    answer_data = data_manager.get_answer_by_id(answer_id)
    question_id = data_manager.get_question_id_by_answer_id(answer_id)
    question_id = question_id[0].get('id')
    if request.method == 'POST':
        site_input = [request.form['new-answer']]
        site_input.append(answer_id)
        data_manager.edit_answer(site_input)
        return redirect(
            url_for('show_specific_question', question_id=question_id))
    return render_template('edit_answer.html',
                           answer_data=answer_data,
                           question_id=question_id)
示例#21
0
def edit_answer(answer_id):
    if authenticate_user():
        answer = data_manager.get_answer_by_id(answer_id)
        if request.method == "GET":
            return show_question(answer['question_id'],
                                 answer_to_edit=answer_id)
        elif request.method == "POST":
            data = request.form.to_dict()
            data['id'] = answer_id
            data_manager.update_answer(data)
            return redirect(
                url_for("show_question", question_id=answer['question_id']))
    return redirect(url_for('login'))
示例#22
0
def edit_comment(comment_id):
    comment = data_manager.get_table_by_id(comment_id, "comment")
    question_id = comment['question_id']
    if question_id is None:
        question_id = data_manager.get_answer_by_id(comment['answer_id'])['question_id']

    if request.method == 'POST':
        my_new_data = request.form.to_dict()
        data_manager.edit_comment(my_new_data)

        return redirect('/question/' + str(question_id))

    return render_template('edit_comment.html', comment=comment, question_id=str(question_id))
示例#23
0
def route_counter_answer(question_id, response_id, direction):
    answers = data_manager.get_answer_by_id(response_id)
    votes = int(answers['vote_number'])
    votes += 1 if direction == 'up-vote' else -1
    updated_votes = {
        'id': answers['id'],
        "submission_time": answers["submission_time"],
        'vote_number': votes,
        'question_id': answers['question_id'],
        'message': answers['message'],
        'image': answers['image']
    }
    data_manager.update_answer(updated_votes)
    return redirect('/display/' + question_id)
示例#24
0
def route_edit_answer(question_id, answer_id):
    if request.method == 'GET':
        answer = data_manager.get_answer_by_id(answer_id)
        question = data_manager.get_question_by_id(question_id)
        req_url = url_for('display.route_edit_answer',
                          question_id=question_id,
                          answer_id=answer_id)
        return render_template('post_answer.html',
                               answers=answer,
                               question=question,
                               req_url=req_url)
    else:
        answer = data_manager.get_answer_by_id(answer_id)
        updated_votes = {
            'id': answer['id'],
            "submission_time": answer["submission_time"],
            'vote_number': answer['vote_number'],
            'question_id': answer['question_id'],
            'message': request.form['answer'],
            'image': answer['image']
        }
        data_manager.update_answer(updated_votes)
        return redirect('/display/' + question_id)
示例#25
0
def add_new_comment_to_answer(answer_id):
    if authenticate_user():
        question_id = data_manager.get_answer_by_id(answer_id)['question_id']
        comments_for_answers = data_manager.get_comments_for_answers(
            question_id)
        if request.method == "GET":
            return show_question(question_id, answer_to_comment=answer_id)
        elif request.method == "POST":
            new_comment = request.form.to_dict()
            new_comment["question_id"] = question_id
            new_comment["answer_id"] = answer_id
            new_comment['user_id'] = session['user_id']
            data_manager.add_comment(new_comment)
            return redirect(url_for("show_question", question_id=question_id))
    return redirect(url_for('login'))
示例#26
0
def edit_answer(id, answer_id):

    if request.method == 'POST':
        updated_answer = request.form.get('updated_answer')
        data_manager.update_answer_by_id(updated_answer, id)

        return redirect(url_for('display_question', id=id))

    if request.method == 'GET':
        id = int(id)
        message = data_manager.get_answer_by_id(answer_id)

        return render_template('edit_question_answer.html',
                               id=id,
                               answer_id=answer_id,
                               message=message)
示例#27
0
def edit_answer(answer_id):
    if request.method == "GET":
        full_answer = data_manager.get_answer_by_id(answer_id)

        message = full_answer[0]['message']
        time = datetime.now()
        return render_template('edit_answer.html',
                               message=message,
                               answer_id=answer_id)
    if request.method == "POST":
        answer_data = request.form.to_dict()
        message = answer_data['message']
        question_id_in_list = data_manager.get_question_id(answer_id)
        question_id = question_id_in_list[0]['question_id']
        data_manager.update_answer_by_id(answer_id, message, datetime.now())

        return redirect(url_for('display_question', question_id=question_id))
示例#28
0
def add_comment_to_answer(answer_id, question_id):
    if request.method == "GET":
        answer = data_manager.get_answer_by_id(answer_id)
        question = data_manager.get_question_by_id(question_id)
        return render_template('add_comment_to_answer.html',
                               answer=answer,
                               question=question)

    new_comment_to_answer = {
        'message': request.form.get('comment'),
        'type': 'answer',
        'answer_id': answer_id
    }
    data_manager.write_to_comments(new_comment_to_answer)
    global latest_opened_question_id
    return redirect(
        url_for('display_question', question_id=latest_opened_question_id))
示例#29
0
def edit_comment(comment_id):
    if request.method == "GET":
        comment = data_manager.get_comment_by_id(comment_id)
        return render_template('edit_comment.html', comment=comment)

    comment = data_manager.get_comment_by_id(comment_id)
    if comment['question_id']:
        question_id = comment['question_id']
    else:
        question_id = data_manager.get_answer_by_id(
            comment['answer_id'])['question_id']
    edited_comment_data = {
        'message':
        request.form.get('message'),
        'edited_count':
        comment['edited_count'] +
        1 if type(comment['edited_count']) is int else 1
    }
    data_manager.edit_comment(comment_id, edited_comment_data)
    return redirect(url_for('display_question', question_id=question_id))
示例#30
0
def edit_answer_get(question_id, answer_id):
    user_id = data_manager.get_user_id_by_activity('answer', answer_id)
    question = data_manager.get_question_by_id(question_id)
    if session.get(FORM_USERNAME) and session[SESSION_ID] == user_id:
        answer = data_manager.get_answer_by_id(answer_id)
        answer_images = util.get_answers_images([answer])
        if answer is None:
            return redirect(
                url_for("display_question", question_id=question_id))
        else:
            response = make_response(
                render_template("add_update_answer.html",
                                username=SESSION_USERNAME,
                                question=question,
                                answer=answer,
                                answer_images=answer_images))
            return response
    else:
        flash("Update option is available only for the author!", "warning")
        return redirect(url_for('display_question', question_id=question_id))