from django import forms
-from django.forms.models import inlineformset_factory
+from django.forms.widgets import RadioSelect
+
+
+class QuestionForm(forms.Form):
+ def __init__(self, question, *args, **kwargs):
+ super(QuestionForm, self).__init__(*args, **kwargs)
+ self.fields["answers"] = forms.ModelChoiceField(
+ queryset=question.get_answers(),
+ empty_label=None,
+ widget=RadioSelect)
self.assertEqual((score, possible), (0.5, 2))
score, possible = anon_session_score(request)
- self.assertEqual((score, possible), (0, 0))
+ self.assertEqual((score, possible), (0.5, 2))
class TestQuestionViewsAnon(TestCase):
from django.conf.urls import patterns, url
from .views import QuizListView, CategoriesListView,\
- ViewQuizListByCategory, QuizUserProgressView, QuizDetailView
+ ViewQuizListByCategory, QuizUserProgressView, QuizDetailView, QuizTake
urlpatterns = patterns('quiz.views',
url(regex=r'^(?P<quiz_name>[\w-]+)/take/$',
view='quiz_take',
name='quiz_question'),
+
+ url(regex=r'^x/(?P<quiz_name>[\w-]+)/take/$',
+ view=QuizTake.as_view(),
+ name='quiz_question'),
)
from django.shortcuts import get_object_or_404, render, render_to_response
from django.template import RequestContext
from django.utils.decorators import method_decorator
-from django.views.generic import DetailView, ListView, TemplateView
+from django.views.generic import DetailView, ListView, TemplateView, FormView
+from .forms import QuestionForm
from .models import Quiz, Category, Progress, Sitting, Question
'session': session_score,
'possible': session_possible},
context_instance=RequestContext(request))
+
+
+def form_test(request, quiz_name):
+ quiz = Quiz.objects.get(url=quiz_name.lower())
+ try:
+ sitting = Sitting.objects.get(user=request.user,
+ quiz=quiz,
+ complete=False)
+
+ except Sitting.DoesNotExist:
+ sitting = Sitting.objects.new_sitting(request.user, quiz)
+
+ except Sitting.MultipleObjectsReturned:
+ sitting = Sitting.objects.filter(user=request.user,
+ quiz=quiz,
+ complete=False)[0]
+
+ question = sitting.get_first_question()
+ form = QuestionForm(question=question)
+ return render_to_response('q_test.html', {'form': form,
+ 'question': question})
+
+
+class QuizTake(FormView):
+ form_class = QuestionForm
+ template_name = 'q_test.html'
+
+ def get_context_data(self, **kwargs):
+ context = super(QuizTake, self).get_context_data(**kwargs)
+ context['question'] = self.question
+ return context
+
+ def get_form_kwargs(self):
+ kwargs = super(QuizTake, self).get_form_kwargs()
+ quiz = get_object_or_404(Quiz, url=self.kwargs['quiz_name'])
+
+ try:
+ sitting = Sitting.objects.get(user=self.request.user,
+ quiz=quiz,
+ complete=False)
+
+ except Sitting.DoesNotExist:
+ sitting = Sitting.objects.new_sitting(self.request.user, quiz)
+
+ except Sitting.MultipleObjectsReturned:
+ sitting = Sitting.objects.filter(user=self.request.user,
+ quiz=quiz,
+ complete=False)[0]
+
+ self.question = sitting.get_first_question()
+ return dict(kwargs, question=self.question)