예제 #1
0
파일: views.py 프로젝트: kodchi/uzbek
def quiz(request, template_name):
    """Start the quiz and show the first question"""
    data = {}

    exclude = []
    question, proverb = utils.generate_question(request, exclude)
    data.update(question)

    exclude.append(proverb.id)

    uuid = str(uuid4())

    data['uuid'] = uuid
    data['check_url'] = reverse('proverbs:check_answer')
    data['next_url'] = reverse('proverbs:next_question')
    data['save_score_url'] = reverse('proverbs:save_quiz_score')
    data['hints'] = DEFAULT_HINT_COUNT
    data['time'] = request.user.userprofile.game_time
    data['number'] = 1  # the number of the question

    start = datetime.now()
    time_left = timedelta(0, data['time'] * 60)
    # todo: set expiration
    # proverb, start time, result (initally wrong)
    request.session['quiz-%s' % uuid] = {
        'proverb': proverb,
        'start': start,  # start will change with each next question
        'time_left': time_left,
        'hints': DEFAULT_HINT_COUNT,
        'time': data['time'],
        'number': data['number'],
        'score': 0,  # in the beginning the user's score is 0
        'exclude': exclude,  # showed proverb ids
        # save the score only if there are no more questions to show
        'is_score_saved': False
    }

    return render_to_response(
        template_name,
        data,
        context_instance=RequestContext(request)
    )
예제 #2
0
파일: views.py 프로젝트: kodchi/uzbek
def next_question(request):
    if not request.is_ajax():
        raise Http404

    uuid = request.GET.get('uuid')
    if not uuid:
        return HttpResponse('error: uuid')

    session_quiz = request.session.get('quiz-%s' % uuid)
    if not session_quiz:
        return HttpResponse('error: session')

    data = {}

    # has the quiz end time reached?
    if session_quiz['time_left'].seconds <= 0:
        return HttpResponse('expired')

    question_data = utils.generate_question(
        request, session_quiz['exclude'])

    if not question_data:
        return HttpResponse('no more')

    question, proverb = question_data
    data.update(question)

    session_quiz['proverb'] = proverb
    session_quiz['exclude'].append(proverb.id)
    session_quiz['start'] = datetime.now()
    session_quiz['number'] += 1
    request.session.modified = True

    data['number'] = session_quiz['number']
    data['success'] = True

    # return a new question
    return HttpResponse(json.dumps(data),
                        mimetype='application/json')