예제 #1
0
def add_tag(question_id):
    if request.method == 'POST':

        try:
            tag = request.form['tag']
        except KeyError:
            tag = None
        try:
            new_tag = request.form['new_tag']
        except KeyError:
            new_tag = None

        if new_tag == None:
            tag_id = tag
            data_manager.add_tag_to_question(question_id, tag_id)
            return redirect(url_for('route_question', question_id=question_id))
        else:
            data_manager.add_new_tag(new_tag)
            tags = data_manager.get_tags()
            return render_template("tags.html",
                                   question_id=question_id,
                                   tags=tags)

    tags = data_manager.get_tags()
    return render_template("tags.html", question_id=question_id, tags=tags)
예제 #2
0
def add_new_tag(question_id):
    if request.method == 'POST':
        tag_name = request.form['tag_name']
        new_tag_type = request.form['new_tag_type']
        tag_id = data_manager.get_id_from_tag(tag_name=tag_name)
        if new_tag_type == '':
            try:
                data_manager.add_new_tag(tag_id=tag_id,
                                         question_id=question_id)
            except:
                tags = data_manager.get_tags()
                return render_template('tag_problem.html',
                                       tags=tags,
                                       question_id=question_id)
        else:
            if data_manager.create_new_tag(new_tag=new_tag_type) != "None":
                tag_id = data_manager.get_id_from_tag(tag_name=new_tag_type)
                data_manager.add_new_tag(tag_id=tag_id,
                                         question_id=question_id)
            else:
                tags = data_manager.get_tags()
                return render_template('tag_problem.html',
                                       tags=tags,
                                       question_id=question_id)
        return redirect('/question/' + str(question_id))
    tags = data_manager.get_tags()
    return render_template('tag_new.html', tags=tags, question_id=question_id)
예제 #3
0
파일: server.py 프로젝트: Conalau/AskMate
def display_one_question(question_id):
    question_id = int(question_id)
    question = get_question_by_id(question_id)
    answers = data_manager.get_answers_for_question(question_id)
    temp_count = data_manager.get_count_number(question_id)
    count = temp_count['view_number']
    data_manager.update_view_count(count, question_id)
    answer_id_list = []
    user_id = []
    for answer in answers:
        answer_id_list.append(str(answer['id']))
        user_id.append(str(answer['user_id']))
    while 'None' in user_id:
        user_id.remove('None')
    answer_comment = data_manager.get_comments_for_answers(
        question_id, answer_id_list)
    question_comments = data_manager.get_comments_for_question(question_id)
    tag = data_manager.get_tags(question_id)
    user = data_manager.get_user_for_question(question_id)
    answer_users = data_manager.user_for_answer(user_id)
    if user:
        user_name = user['user_name']
    else:
        user_name = 'No User Available'
    return render_template('questions.html',
                           question_id=question_id,
                           question=question,
                           answers=answers,
                           answer_comments=answer_comment,
                           question_comments=question_comments,
                           tags=tag,
                           username=user_name,
                           answer_users=answer_users)
예제 #4
0
def new_tag(question_id):
    if request.method == "GET":
        list_of_tags = data_manager.get_tags()
        return render_template('new_tag.html',
                               list_of_tags=list_of_tags,
                               question_id=question_id)
    elif request.method == "POST":
        tag = request.form.get("tag")
        data_manager.insert_tag(question_id, tag)
        return redirect("/question/{}".format(question_id))
예제 #5
0
def question_page(question_id):
    try:
        question = data_manager.get_question_by_question_id(question_id)
        answers = data_manager.get_all_answers_by_question_id(question_id)
        tags = data_manager.get_tags(question_id)
        question_comments = data_manager.get_question_comments(question_id)
        data_manager.question_view_number(question_id)
        return render_template("question.html", question=question, answers=answers, question_comments=question_comments,
                               tags=tags)
    except (IndexError, UndefinedError):
        abort(404)
예제 #6
0
def route_tag_edit(question_id):
    if 'id' not in session:
        return redirect(url_for('route_main'))
    if request.method == "GET":
        raw_tags = data_manager.get_tags(question_id)
        tags = ['#' + str(tag['name']) for tag in raw_tags]
        return render_template("new-tag.html", tags=tags, question_id=question_id)
    if request.method == "POST":
        new_tags = [request.form[item] for item in request.form]
        new_tags = new_tags[0].split()
        new_tags = [item.lstrip('#') for item in new_tags]
        data_manager.modify_tags(question_id, new_tags)
        return redirect(f"/question/{question_id}/question")
예제 #7
0
def new_tag(question_id):
    tags_name = []
    tags = data_manager.get_tags(question_id)
    for tag in tags:
        tags_name.append(data_manager.get_tags_name(tag["tag_id"]))
    question = questions_data.get_question(question_id)
    tags_list = data_manager.get_tags_list()
    return render_template("new_tag.html",
                           headers=QUESTIONS_HEADERS,
                           headers_print=HEADERS_PRINT,
                           question=question,
                           tags_name=tags_name,
                           tags_list=tags_list)
예제 #8
0
def route_question(question_id):
    question = data_manager.get_question_with_username(int(question_id))
    tags = data_manager.get_tags(question_id)
    answers = data_manager.get_answers_by_question_id(int(question_id))
    question_comment = data_manager.get_comment_with_username('question_id', int(question_id))
    answers_comments = data_manager.get_answer_comments_with_username(int(question_id))
    if 'id' in session:
        user_id = session["id"]
        upvoted_questions = data_manager.get_votes_by_user('question_id', user_id, 'True')
        downvoted_questions = data_manager.get_votes_by_user('question_id', user_id, 'False')
        upvoted_answers = data_manager.get_votes_by_user('answer_id', user_id, 'True')
        downvoted_answers = data_manager.get_votes_by_user('answer_id', user_id, 'False')
    else:
        upvoted_questions = None
        downvoted_questions = None
        upvoted_answers = None
        downvoted_answers = None
    return render_template("question.html", question_id=int(question_id), question=question[0], answers=answers,
                           question_comment=question_comment, answers_comments=answers_comments, tags=tags, upvoted_questions=upvoted_questions, downvoted_questions=downvoted_questions,
                           upvoted_answers=upvoted_answers, downvoted_answers=downvoted_answers)
예제 #9
0
def display_question(question_id):
    question = questions_data.get_question(question_id)
    answers = answers_data.get_answers(question_id)
    comments = data_manager.get_comments(question_id)
    tags_name = []
    tags = data_manager.get_tags(question_id)
    for tag in tags:
        tags_name.append(data_manager.get_tags_name(tag["tag_id"]))
    image_names = os.listdir(app.config['UPLOAD_FOLDER'])
    question_image_name = data_manager.return_question_image_name(
        image_names, question_id)
    return render_template("display_question.html",
                           headers=QUESTIONS_HEADERS,
                           question=question,
                           answers_headers=ANSWERS_HEADERS,
                           answers=answers,
                           headers_print=HEADERS_PRINT,
                           comments=comments,
                           tags_name=tags_name,
                           question_image_name=question_image_name)
예제 #10
0
def route_question(question_id):
    question_data = data_manager.question(question_id)
    answers = data_manager.get_answers_by_question_id(question_id)
    comment_question = data_manager.get_comment_by_question(question_id)
    comment_answer = data_manager.get_comment_by_answer()
    question_tags = data_manager.get_tags(question_id)

    accept_delete = False
    if request.args:
        accept_delete = True

    return render_template('question.html',
                           question_id=question_id,
                           question=question_data['title'],
                           question_message=question_data['message'],
                           image=question_data['image'],
                           answer_images=answers,
                           comment=comment_question,
                           answer_comment=comment_answer,
                           tags=question_tags,
                           accept_delete=accept_delete)
예제 #11
0
def add_tag_to_question(question_id=None):
    try:
        user_id = data_manager.get_userid_by_username(session['username'])
    except KeyError:
        return redirect('/')
    if request.method == 'GET' and user_id == data_manager.get_foreign_key_by_id(
            data_manager.question_db, 'users_id', question_id)[0]['users_id']:
        question = data_manager.get_question_by_id(question_id)  # add tag get
        question_title = question[0]['title']
        tags = data_manager.get_tags(question_id)
        return render_template('add_tag_head.html',
                               question_title=question_title,
                               tags=tags,
                               question_id=question_id,
                               user_id=user_id)
    elif request.method == 'POST' and user_id == data_manager.get_foreign_key_by_id(
            data_manager.question_db, 'users_id', question_id)[0]['users_id']:
        question = data_manager.get_question_by_id(question_id)
        question_id_to_add = question[0]['id']
        tag = request.form['new_tag']
        data_manager.add_tag_to_question(question_id_to_add, tag)
    else:  # not authorized to add tag
        flash('Invalid user')
    return redirect('/question/{}'.format(question_id))
예제 #12
0
def route_question(question_id):
    user_id = data_manager.get_userid_by_username(session.get('username'))
    question = data_manager.get_line_data_by_id(data_manager.question_db,
                                                question_id)
    headers_q = data_manager.get_column_names_of_table(
        data_manager.question_db)
    headers_c = data_manager.get_column_names_of_table(
        data_manager.comment_db)[3:5]
    headers_a = data_manager.get_column_names_of_table(data_manager.answer_db)
    comments_q = data_manager.get_comments_data_by_foreign_id(
        'question_id', question_id)
    answers = data_manager.get_lines_data_by_foreign_id(
        data_manager.answer_db, 'question_id', question_id)
    filename_q = '/static/image_for_question' + str(question_id) + '.png'
    image_q = util.check_file(filename_q.lstrip("/"))
    tags = data_manager.get_tags(question_id)
    answer_ids = {}
    for answer in answers:
        answer_ids[answer['id']] = [
            util.check_file('static/image_for_answer' + str(answer['id']) +
                            '.png'),
            '/static/image_for_answer' + str(answer['id']) + '.png',
            data_manager.get_lines_data_by_foreign_id(data_manager.comment_db,
                                                      'answer_id',
                                                      answer['id'])
        ]
    if user_id:
        answer_statuses = list(
            map(
                lambda x: x['accepted_status'],
                data_manager.get_lines_data_by_foreign_id(
                    data_manager.answer_db, 'question_id', question_id)))
        voted_questions_of_user = list(
            map(
                lambda x: x['question_id'],
                data_manager.get_foreign_key_by_id(data_manager.user_vote_db,
                                                   'question_id', user_id)))
        voted_answers_of_user = list(
            map(
                lambda x: x['answer_id'],
                data_manager.get_foreign_key_by_id(data_manager.user_vote_db,
                                                   'answer_id', user_id)))
        return render_template('question_head.html',
                               question_id=question_id,
                               question=question,
                               headers_q=headers_q,
                               comments_q=comments_q,
                               headers_c=headers_c,
                               answers=answers,
                               headers_a=headers_a,
                               image_q=image_q,
                               filename_q=filename_q,
                               answer_ids=answer_ids,
                               tags=tags,
                               user_id=user_id,
                               voted_questions_of_user=voted_questions_of_user,
                               voted_answers_of_user=voted_answers_of_user,
                               answer_statuses=answer_statuses)
    else:
        return render_template('question_head.html',
                               question_id=question_id,
                               question=question,
                               headers_q=headers_q,
                               comments_q=comments_q,
                               headers_c=headers_c,
                               answers=answers,
                               headers_a=headers_a,
                               image_q=image_q,
                               filename_q=filename_q,
                               answer_ids=answer_ids,
                               tags=tags)