Exemplo n.º 1
0
def edit_user(user_id):
    """ (str) -> rendered_template

    Returns the rendered template of admin-users.html with data from user input
    into User Object, after the user makes a POST request to 'admin/user/<user_id>'
    """
    if request.form['submit'] == 'Save':
        user = UserModel.get(ObjectId(user_id))
        user.user_type = request.form['user-type'].lower()
        UserModel.update(user)
    elif request.form['submit'] == 'Delete':
        db.accounts.remove(ObjectId(user_id))
    return redirect(url_for('get_user_list'))
Exemplo n.º 2
0
def edit_user(user_id):
    """ (str) -> rendered_template

    Returns the rendered template of admin-users.html with data from user input
    into User Object, after the user makes a POST request to 'admin/user/<user_id>'
    """
    if request.form['submit'] == 'Save':
        user = UserModel.get(ObjectId(user_id))
        user.user_type = request.form['user-type'].lower()
        UserModel.update(user)
    elif request.form['submit'] == 'Delete':
        db.accounts.remove(ObjectId(user_id))
    return redirect(url_for('get_user_list'))
Exemplo n.º 3
0
def answer_question(question_id):
    """ (str) -> str

    Return success message if answer is correct,
    Otherwise return the failure message
    """
    session['try'] = session.get('try', 0) + 1

    question = GetQuestion(ObjectId(question_id)).get()

    if not question:
        return 'Question not found', 404

    given_order = json.loads(request.form.get('order', '[]'))
    given_indentation = json.loads(request.form.get('indentation', '[]'))

    user = UserModel.get({'username': session['username']})

    if ObjectId(question_id) not in user.completed:
        question.attempts += 1

    if check_answer(question, given_order, given_indentation):
        if ObjectId(question_id) not in user.completed:
            user.completed.append(ObjectId(question_id))
            if session["try"] > 10:
                user.xp += question.difficulty
            else:
                user.xp += ceil(int(question.difficulty) * 10 / int(session["try"]))
            user.level = ceil(user.xp / 25)
            question.success += 1
        UpdateQuestion(question).post()
        UserModel.update(user)
        session.pop("try", None)
        return RESPONSE_SUCCESS + "<br>Return to home for more challenges"
    else:
        return RESPONSE_FAILED + "<br>Failed Attempt: " + str(
            session["try"]) + "<br>More failed attempts results in less trophies"