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}')
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)
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)
def vote_down_answer(answer_id): data_manager.vote_down_answer(answer_id) question_id = data_manager.get_question_id_by_answer_id( answer_id)['question_id'] user_id = data_manager.get_display_question(question_id)['user_id'] reputation = data_manager.get_reputation(user_id=user_id) data_manager.update_reputation(user_id, (reputation - 2)) return redirect('/question/' + str(question_id))
def delete_answer(answer_id): answer_user_id = data_manager.get_user_id_by_answer_id(answer_id) if session['user_id'] == answer_user_id: question_id = data_manager.get_question_id_by_answer_id(answer_id) data_manager.delete_answer_with_image_by_id(answer_id) return redirect(url_for('route_question', question_id=question_id)) else: return "You don't have the permission to delete this answer!"
def toggle_accepted(answer_id): data_manager.toggle_accepted(answer_id) value = user.check_value_of_accepted_button(answer_id) if value == True: user.change_user_reputation_in_answer(answer_id, 15) elif value == False: user.change_user_reputation_in_answer(answer_id, -15) question_id = data_manager.get_question_id_by_answer_id(answer_id) return redirect('/question/{}'.format(question_id))
def answer_vote(answer_id, vote): value = 0 if vote == 'vote-up': value = 1 elif vote == 'vote-down': value = -1 data_manager.update_vote_number('answer', answer_id, value) question_id = data_manager.get_question_id_by_answer_id(answer_id) return redirect(f'/question/{question_id}')
def save_edited_comment(): edited_message = request.form.to_dict() data_manager.update_comment(edited_message) edited_comment = data_manager.get_comment_by_id(edited_message["id"]) if edited_comment["question_id"] == None: question_id = data_manager.get_question_id_by_answer_id(edited_comment["answer_id"]) else: question_id = edited_comment["question_id"] url_to_question = url_for("get_question_details", question_id=question_id) return redirect(url_to_question)
def add_comment_to_answer(answer_id): if request.method == 'POST': user_id = data_manager.get_user_id_by_username(session['username']) comment_message = request.form['message'] data_manager.add_comment_to_answer(answer_id, comment_message, user_id) question_id = data_manager.get_question_id_by_answer_id(answer_id) return redirect(url_for('route_question', question_id=question_id)) question = data_manager.get_question_by_answer_id(answer_id) answer = data_manager.get_answer_by_answer_id(answer_id) return render_template('add-comment-to-answer.html', question=question, answer=answer)
def add_comment_to_answer(answer_id): if request.method == 'POST': comment = { 'message': request.form['comment'], 'user_id': session['user_id'] } question_id = data_manager.get_question_id_by_answer_id(answer_id) data_manager.add_comment(comment, question_id['id'], answer_id) return redirect(f'/question/{question_id["id"]}') return render_template('add_and_edit_comment_to_answer.html', answer_id=answer_id)
def accept_answer(answer_id): question_id = data_manager.get_question_id_by_answer_id( answer_id)['question_id'] user_questions = data_manager.get_user_questions(session['username']) question_ids = [q['id'] for q in user_questions] user_id_for_answer = data_manager.get_user_name_by_question_id( question_id)['id'] if question_id in question_ids: data_manager.update_reputation_by_acceptance(answer_id, user_id_for_answer) data_manager.change_acceptance(answer_id) return redirect('/question/' + str(question_id))
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)
def delete_comment(comment_id): try: comment = data_manager.get_comment_by_comment_id(comment_id) if comment['question_id'] is not None: question_id = comment['question_id'] elif comment['question_id'] is None and comment['answer_id'] is not None: question_id = data_manager.get_question_id_by_answer_id(comment['answer_id']) if request.method == 'GET': return render_template('delete-comment.html', comment_id=comment_id, comment=comment, question_id=question_id) elif request.method == 'POST': data_manager.delete_comment(comment_id) return redirect(url_for('question_page', question_id=question_id)) except (IndexError, UndefinedError): abort(404)
def delete_comment(comment_id): site_user_id = data_manager.get_site_user_id_by_comment_id(comment_id) if site_user_id['site_user_id'] != session['user_id']: return redirect('https://i.imgflip.com/239qx5.jpg') question_id = str( data_manager.get_question_id_by_comment_id(comment_id)['question_id']) if question_id == 'None': answer_id = data_manager.get_answer_id_by_comment_id( comment_id)['answer_id'] question_id = str( data_manager.get_question_id_by_answer_id(answer_id) ['question_id']) data_manager.delete_comment(comment_id) return redirect('/question/' + question_id)
def edit_answer(answer_id): answer_user_id = data_manager.get_user_id_by_answer_id(answer_id) if session['user_id'] == answer_user_id: if request.method == 'POST': edited_answer = dict(request.form) new_image = save_file(request.files['image_file']) edited_answer['image'] = new_image edited_answer['id'] = answer_id data_manager.edit_answer(edited_answer) question_id = data_manager.get_question_id_by_answer_id(answer_id) return redirect(url_for('route_question', question_id=question_id)) question = data_manager.get_question_by_answer_id(answer_id) answer_to_edit = data_manager.get_answer_by_answer_id(answer_id) return render_template('edit.html', answer_to_edit=answer_to_edit, question=question) else: return "You don't have permission to edit this answer"
def edit_comment(comment_id): try: comment = data_manager.get_comment_by_comment_id(comment_id) if comment['question_id'] is not None: question_id = comment['question_id'] elif comment['question_id'] is None and comment['answer_id'] is not None: question_id = data_manager.get_question_id_by_answer_id(comment['answer_id']) if request.method == 'GET': return render_template('edit-comment.html', comment_id=comment_id, comment=comment, question_id=question_id) elif request.method == 'POST': submission_time = datetime.now().isoformat(timespec='seconds') message = request.form['message'] edited_count = comment['edited_count'] if edited_count is None: edited_count = 0 edited_count += 1 data_manager.update_comment(message, submission_time, edited_count, comment_id) return redirect(f'/question/{question_id}') except (IndexError, UndefinedError): abort(404)
def add_new_comment_to_answer(answer_id): if request.method == 'POST': question_id = data_manager.get_question_id_by_answer_id(answer_id) username = session['username'] user_id = data_manager.get_user_id_by_username(username) new_comment = { 'question_id': question_id, 'answer_id': answer_id, 'message': request.form['comment_message'].replace('\n', '<br/>'), 'submission_time': "", 'edited_count': 0, 'user_id': user_id } data_manager.insert_new_answer_comment_to_database(new_comment) data_manager.update_view_counter(question_id, -1) return redirect(url_for('route_show_question', question_id=question_id)) return render_template('new_answer_comment.html', answer_id=answer_id)
def new_answer_comment(answer_id): if session.get(FORM_USERNAME): if request.method == "POST": details = dict(request.form) details["submission_time"] = util.get_current_date_time() details["user_id"] = session['user_id'] data_manager.add_answer_comment(details) question_id = data_manager.get_question_id_by_answer_id(answer_id) return redirect( url_for("display_question", question_id=question_id)) if request.method == "GET": answer = data_manager.get_answer_by_id(answer_id) response = make_response( render_template("add_comment.html", username=SESSION_USERNAME, item=answer, item_type="answer", url=url_for('new_answer_comment', answer_id=answer_id))) # item_id = 'answer_id') return response else: return redirect(url_for('login_user'))
def get_question_id(answer_id): return data_manager.get_question_id_by_answer_id(answer_id)
def route_remove_answer(answer_id): question_id = data_manager.get_question_id_by_answer_id(answer_id) data_manager.remove_record('answer', answer_id) return redirect(f'/question/{question_id}')
def route_delete_answer(answer_id): question_id = dm.get_question_id_by_answer_id(answer_id) question_id = dict(question_id[0]) question_id = question_id['question_id'] dm.delete_answer(answer_id) return redirect(url_for('route_expand_question', question_id=question_id))
def accept_answer(answer_id): rep_num = 15 util.update_reputation('answer', answer_id, rep_num) data_manager.accept_answer(answer_id) question_id = data_manager.get_question_id_by_answer_id(answer_id) return redirect(url_for('route_question', question_id=question_id))
def get_question_by_comment_id(comment_id): question_id = data_manager.get_question_id_by_comment_id(comment_id) if question_id is None: answer_id = data_manager.get_answer_id_by_comment_id(comment_id) question_id = data_manager.get_question_id_by_answer_id(answer_id) return question_id
def delete_answer(answer_id: int): question_id = data_manager.get_question_id_by_answer_id(answer_id) question_id = question_id[0].get('id') data_manager.delete_answer(answer_id) return redirect(url_for('show_specific_question', question_id=question_id))
def vote_answer(answer_id, vote): rep_num = 10 if vote == 'vote-up' else -2 util.update_reputation('answer', answer_id, rep_num) data_manager.vote_answer(answer_id, vote) question_id = data_manager.get_question_id_by_answer_id(answer_id) return redirect(url_for('route_question', question_id=question_id))
def route_vote_answer_down(answer_id): data_manager.vote_counter('answer', answer_id, 'down') question_id = data_manager.get_question_id_by_answer_id(answer_id) data_manager.update_view_counter(question_id, -1) return redirect(url_for('route_show_question', question_id=question_id))