Пример #1
0
def quiz_dashboard(qid=None):
    if not current_user.is_authenticated:
        flash('Login is Required for this action!')
        return redirect('/', 302)
    if not current_user.is_admin:
        flash('You need to be an Admin for Performing this action!')
        return redirect('/', 302)

    template = "_question.html"
    req_path = request.path.split('/')[-1]

    if qid and len(qid) > 24:
        return render_template('404.html')
    if req_path == qid:
        req_path = request.path.split('/')[-2]

    if req_path == 'add':
        form = AddQuestion()
        if request.method == "POST":
            if form.validate():
                sol = {
                    1: form.option1.data,
                    2: form.option2.data,
                    3: form.option3.data,
                    4: form.option4.data,
                }
                Quiz(question=form.question.data,
                     options=[
                         form.option1.data,
                         form.option2.data,
                         form.option3.data,
                         form.option4.data,
                     ],
                     answer=sol.get(form.solution.data)).save_quiz()
                flash('Question Saved Successfully!')
                return redirect('/admin/dashboard/Quiz/edit')
        return render_template('add' + template, form=form)

    elif req_path == 'edit':
        if not qid:
            questions = Quiz.get_questions(userID=None,
                                           show_history=True,
                                           is_admin=True,
                                           limit=1000)
            for question in questions:
                question._id = str(question._id)

            return render_template('display_questions.html',
                                   questions=questions)

        form = EditQuestion()
        question = Quiz.get_question(qid)
        if request.method == "POST":
            if form.validate_on_submit():
                if question:
                    question.question = form.question.data
                    question.options = [
                        form.option1.data, form.option2.data,
                        form.option3.data, form.option4.data
                    ]
                    sol = {
                        1: form.option1.data,
                        2: form.option2.data,
                        3: form.option3.data,
                        4: form.option4.data,
                    }
                    question.answer = sol.get(form.solution.data)
                    question.update_quiz_info()
                    # print('Quiz updated!')
                    flash('Question Edited Successfully!')
                    return redirect('/admin/dashboard/Quiz/edit')
                else:
                    flash('Unable to find Question in DB')
                    return redirect('/')
            else:
                flash("Couldn't Validate form..")
                # print(form.validate_on_submit())
                return render_template('edit' + template, form=form)

        if question:
            form.solution.default = question.options.index(question.answer) + 1
            form.process()
            form.question.data = question.question
            form.option1.data = question.options[0]
            form.option2.data = question.options[1]
            form.option3.data = question.options[2]
            form.option4.data = question.options[3]
            # form.process()

        return render_template('edit' + template, form=form)

    elif req_path == 'delete' or qid:
        if request.method == "POST" and qid:
            # print(help(Quiz.DB.CURSOR.delete_one))
            Quiz.DB.CURSOR.Quiz.delete_one({'_id': ObjectId(qid)})
            flash('Question Deleted!')
            return redirect('/admin/dashboard/Quiz/delete')

        if not qid:
            questions = Quiz.get_questions(userID=None,
                                           show_history=True,
                                           is_admin=True,
                                           limit=1000)
            for question in questions:
                question._id = str(question._id)

            return render_template('display_questions.html',
                                   questions=questions)
        return render_template('delete_question.html')
    else:
        return render_template('404.html')
Пример #2
0
                    return redirect('/play')
                else:
                    return redirect('/final_score')
            return render_template('404.html')
        else:
            errors = []
            errors.append(form.qid.errors)
            errors.append(form.ans.errors)
            errors.append(form.current_score.errors)
            errors.append(form.correct_ans.errors)
            if qid:
                return redirect('/play/')
            return str(errors)

    if not qid:
        if question := Quiz.get_questions(current_user._id, sample=1):
            # question is a list with one element
            question = question[0]  # accessing that element

            form.qid.data = str(question._id)
            if not form.current_score.data:
                form.current_score.data = 0
            form.correct_ans.data = question.answer
        else:
            flash('Well Done! You have reached the end of the Quiz!')
            if session.get('score') != None and session.get('score') > 0:
                current_user.total_wins += 1
                current_user.update_user_info()
                return redirect('/final_score')
            return redirect('/')