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)
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)
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)
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))
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)
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")
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)
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)
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)
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)
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))
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)