def set_question_values(manipulated_question): manipulated_question["title"] = request.form["title"] manipulated_question["submission_time"] = util.get_new_timestamp() manipulated_question["message"] = request.form["description"] manipulated_question["user_id"] = data_manager.get_user_data(session['username'])['id'] if 'file' in request.files: file = request.files['file'] manipulated_question["image"] = util.save_image(file, data_manager.UPLOAD_FOLDER, "question") return manipulated_question
def login(): if 'username' in session: return redirect("/") if request.method == "GET": return render_template("login.html", logged=False) username = request.form.get("email") if not user_already_registered(username): flash('Wrong password or username!') return redirect("/login") password = request.form.get("password") if username and password: hashed_password = data_manager.get_user_data(username).get("password") if bcrypt.checkpw(password.encode("utf-8"), hashed_password.encode("utf-8")): session["username"] = username session["user_id"] = data_manager.get_user_data(username).get("id") return redirect("/") flash('Wrong password or username!') return redirect("/login")
def add_answer_status(answer_id): answer_data = data_manager.get_specific_record(answer_id, "answer") answer_owner = answer_data['user_id'] reputation_points_based_on_accept_status = {True: 15, False: -15} question_owner_id = data_manager.get_question_owner_based_on_answer( answer_id)['user_id'] if 'username' in session and int(question_owner_id) == int( data_manager.get_user_data(session['username'])['id']): status = not answer_data["accepted"] data_manager.change_answer_status(answer_id, status) data_manager.update_reputation( answer_owner, reputation_points_based_on_accept_status[status]) return redirect("/question/" + str(answer_data["question_id"])) return abort(401)
def answer_vote(answer_id, voting_type): if 'username' not in session: abort(401) username = session['username'] user_id = data_manager.get_user_data(username).get("id") user_votes = data_manager.get_user_votes(user_id) answer = data_manager.get_specific_record(answer_id, "answer") if int(user_id) == int(answer.get("user_id")): return render_your_question_page("answer") for vote in user_votes: if vote["answer_id"] and int( vote["answer_id"]) == int(answer_id) and int(user_id) == int( vote["user_id"]): return render_already_voted_page("answer") if voting_type == "down": data_manager.update_vote_number("answer", str(answer_id), "down") data_manager.update_reputation(answer["user_id"], -2) else: data_manager.update_vote_number("answer", str(answer_id), "up") data_manager.update_reputation(answer["user_id"], 10) data_manager.update_answer_vote(user_id, answer_id) return redirect("/question/" + str(answer.get("question_id")))
def question_vote(question_id, vote): if 'username' not in session: abort(401) username = session['username'] user_id = data_manager.get_user_data(username).get("id") user_votes = data_manager.get_user_votes(user_id) question = data_manager.get_specific_record(question_id, "question") if int(user_id) == int(question.get("user_id")): return render_your_question_page("question") for voter in user_votes: print(voter["question_id"]) print(question_id) if voter["question_id"] and int(voter["question_id"]) == int( question_id) and int(user_id) == int(voter["user_id"]): return render_already_voted_page("question") if vote == "down": data_manager.update_vote_number("question", str(question_id), "down") data_manager.update_reputation(question["user_id"], -2) else: data_manager.update_vote_number("question", str(question_id), "up") data_manager.update_reputation(question["user_id"], 5) data_manager.update_question_vote(user_id, question_id) return redirect("/question/" + question_id)
def get_user_details_from_session(): username = session['username'] user_id = data_manager.get_user_data(username)['id'] return username, user_id