]> git.parisson.com Git - django_quiz.git/commitdiff
Removing everything I can from template tags, putting them into models or views....
authorTom Walker <tomwalker0472@gmail.com>
Sat, 12 Jul 2014 21:23:56 +0000 (22:23 +0100)
committerTom Walker <tomwalker0472@gmail.com>
Sat, 12 Jul 2014 21:23:56 +0000 (22:23 +0100)
quiz/templates/correct_answer.html
quiz/templates/question.html
quiz/templates/result.html
quiz/templatetags/quiz_tags.py
quiz/tests.py
quiz/views.py

index 65b1e774ad293205f56c4fcbdde34c41760bc6c7..b24eeb8d060d9a806b2a18d8785878e4149425b3 100644 (file)
@@ -6,7 +6,7 @@
 
 <table class="table table-striped table-bordered">
   <tbody>
-       {% for answer in answers %}
+       {% for answer in previous.answers %}
       {% if answer.correct %}
            <tr class="success">
                  <td>{{ answer.content }}</td>
@@ -15,8 +15,8 @@
                <tr>
          <td>{{ answer.content }}</td>
                  <td>
-                       {% if question_type.MCQuestion %}
-                         {% if answer.id == previous_answer_id %}
+                       {% if previous.question_type.MCQuestion %}
+                         {% if answer.id|add:"0" == previous.previous_answer|add:"0" %}
                            This was your answer.
                          {% endif %}
                        {% endif %}
index ca4d3316448ebeb2296846e5242ba9a703ce7992..68b7ac95a4681d6d3b30f70703c975a21251298e 100644 (file)
@@ -29,7 +29,7 @@
 
        </div>
 
-       {% correct_answer previous %}
+       {% include 'correct_answer.html' %}
 
        <p><strong>Explanation:</strong></p>
        <div class="well " style="background-color: #fcf8e3;">
@@ -62,7 +62,7 @@
          {% endif %}
 
          {% if question_type.MCQuestion %}
-           {% answers_for_mc_question question %}
+           {% include 'answers_for_mc_question.html' %}
          {% endif %}
 
        </tbody>
index 4338974a1643185f648ba1fbde05d7ecb38dba59..ca9ecb7167f1ccc9ff1ed4c83e79f2597a5c83f7 100644 (file)
@@ -18,7 +18,7 @@
          {{ previous.previous_outcome|yesno:"correct,incorrect" }}
        </strong>
   </p>
-  {% correct_answer previous %}
+  {% include 'correct_answer.html' %}
   <p><strong>Explanation:</strong></p>
   <div class="well " style="background-color: #fcf8e3;">
     <p>{{ previous.previous_question.explanation }}</p>
index f226bd0aa2b4323ec728e5962a5cd1dd640db958..35968f668bd3f7a899a1746aadf3cc78f4d926ef 100644 (file)
@@ -1,30 +1,8 @@
 from django import template
 
-from multichoice.models import Answer, MCQuestion
-
 register = template.Library()
 
 
-@register.inclusion_tag('answers_for_mc_question.html', takes_context=True)
-def answers_for_mc_question(context, question):
-    return {'answers': Answer.objects.filter(question=question).order_by('?')}
-
-
-@register.inclusion_tag('correct_answer.html', takes_context=True)
-def correct_answer(context, previous):
-    """
-    processes the correct answer based on the previous question dict
-    """
-    q = previous['previous_question']
-    q_type = q.__class__.__name__
-    previous_answer_id = context['previous']['previous_answer']
-    if isinstance(q, MCQuestion):
-        previous_answer_id = int(previous_answer_id)
-    return {'answers': q.get_answers(),
-            'question_type': {q_type: True},
-            'previous_answer_id': previous_answer_id}
-
-
 @register.inclusion_tag('correct_answer.html', takes_context=True)
 def correct_answer_for_all(context, question):
     """
@@ -37,7 +15,10 @@ def correct_answer_for_all(context, question):
         user_was_incorrect = True
     else:
         user_was_incorrect = False
-    return {'answers': answers, 'user_was_incorrect': user_was_incorrect}
+    previous = {'answers': answers}
+
+    return {'previous': previous,
+            'user_was_incorrect': user_was_incorrect}
 
 
 @register.inclusion_tag('user_previous_exam.html', takes_context=True)
index 95a1b3cb1cc3f81aa8cc074bd068b44d62285712..768a7ce24ecde8e71413bc9ae24d7b5ffee81ae7 100644 (file)
@@ -566,6 +566,7 @@ class TestQuestionViewsUser(TestCase):
         self.assertEqual(response.context['percent'], 50)
         self.assertIn(self.question1, response.context['questions'])
         self.assertIn(self.question3, response.context['questions'])
+
         self.assertContains(response, 'above question incorrectly')
         self.assertContains(response, 'True')
 
@@ -630,44 +631,6 @@ class TestTemplateTags(TestCase):
         self.sitting = Sitting.objects.new_sitting(self.user, self.quiz1)
         self.sitting.current_score = 1
 
-    def test_answers_mc(self):
-        template = Template('{% load quiz_tags %}' +
-                            '{% answers_for_mc_question question %}')
-        context = Context({'question': self.question1})
-
-        self.assertTemplateUsed('answers_for_mc_question.html')
-        self.assertIn('bing', template.render(context))
-
-    def test_correct_answer_MC(self):
-        template = Template('{% load quiz_tags %}' +
-                            '{% correct_answer previous %}')
-
-        previous_MC = {'previous_answer': 123,
-                       'previous_outcome': 'incorrect',
-                       'previous_question': self.question1}
-
-        context = Context({'previous': previous_MC})
-
-        self.assertTemplateUsed('correct_answer.html')
-        self.assertIn('bing', template.render(context))
-        self.assertIn('bong', template.render(context))
-        self.assertIn('your answer', template.render(context))
-
-    def test_correct_answer_TF(self):
-        template = Template('{% load quiz_tags %}' +
-                            '{% correct_answer previous %}')
-
-        previous_TF = {'previous_answer': 'T',
-                       'previous_outcome': 'correct',
-                       'previous_question': self.question2}
-
-        context = Context({'previous': previous_TF})
-
-        self.assertTemplateUsed('correct_answer.html')
-        self.assertIn('True', template.render(context))
-        self.assertIn('False', template.render(context))
-        self.assertNotIn('your answer', template.render(context))
-
     def test_correct_answer_all_anon(self):
         template = Template('{% load quiz_tags %}' +
                             '{% correct_answer_for_all question %}')
index 307080669e20ebd4483f02cb07e58a1243dfd1fd..1b11eed5fa095e531c1d93179c835b5106734b6a 100644 (file)
@@ -7,6 +7,7 @@ from django.utils.decorators import method_decorator
 from django.views.generic import DetailView, ListView, TemplateView
 
 from .models import Quiz, Category, Progress, Sitting, Question
+from multichoice.models import MCQuestion
 
 
 class QuizListView(ListView):
@@ -115,21 +116,23 @@ def user_load_next_question(request, sitting, quiz):
         if quiz.answers_at_end is not True:
             previous = {'previous_answer': guess,
                         'previous_outcome': is_correct,
-                        'previous_question': question}
+                        'previous_question': question,
+                        'answers': question.get_answers(),
+                        'question_type': {question.__class__.__name__: True}}
 
         sitting.remove_first_question()
 
-    next_question = sitting.get_first_question()
-    if next_question is False:
+    next_q = sitting.get_first_question()
+    if next_q is False:
         #  no questions left
         return final_result_user(request, sitting, quiz, previous)
 
-    question_type = {next_question.__class__.__name__: True}
-
     return render_to_response('question.html',
                               {'quiz': quiz,
-                               'question': next_question,
-                               'question_type': question_type,
+                               'question': next_q,
+                               'question_type': {next_q.__class__.__name__:
+                                                 True},
+                               'answers': next_q.get_answers(),
                                'previous': previous},
                               context_instance=RequestContext(request))