]> git.parisson.com Git - teleforma.git/commitdiff
force user to redo step 1 when he fails to a quizz : https://trackers.pilotsystems...
authorYoan Le Clanche <yoan@ellington.pilotsystems.net>
Fri, 23 Mar 2018 15:54:31 +0000 (16:54 +0100)
committerYoan Le Clanche <yoan@ellington.pilotsystems.net>
Fri, 23 Mar 2018 15:54:31 +0000 (16:54 +0100)
teleforma/templates/quiz/question.html
teleforma/templates/quiz/result.html
teleforma/views/pro.py

index 89215db4a81deda88980c08763dcf9acd59bd169..410c91a2d6beef53f06ef5fd6841ccdeab38648b 100644 (file)
 
 {% block course_content %}
 
+{% if not can_access %}
+   <br/>
+   <p class="alert error">Vous n'avez pas accès à ce quizz car vous n'avez pas complété les étapes 1 et/ou 2.</p>
+   <br/>   
+   <p>
+   <a href="{% url teleforma-seminar-detail seminar.id %}" class="component_icon button icon_next">&nbsp;{% trans "Back" %} au séminaire</a>   
+   </p>
+   <br/>
+{% else %}
+
 {% if previous.answers %}
 
   <p class="muted"><small>{% trans "The previous question" %}:</small></p>
@@ -83,6 +93,7 @@
 </form>
 <br>
 {% endif %}
+{% endif %}
 
 <hr>
 
index fed90e25e9cbd3f10a0524372c57cd81700ff235..88b260f6ed8e8d2ddb58b8145924afc2d06c65fd 100644 (file)
@@ -32,8 +32,8 @@
           <span>Votre quiz est validé.</span><br><br>
           <a href="{% url teleforma-seminar-detail seminar.id %}" class="component_icon button icon_next">&nbsp;{% trans "Back" %} au séminaire</a>
          {% else %}
-          <span>Vous devez recommencer le quiz.</span><br><br>
-          <a href="{% url teleforma-quiz seminar.id  seminar.quiz.url %}" class="component_icon button icon_previous">&nbsp;{% trans "Recommencer" %}</a>
+          <span>Vous devez revalider l'étape 1, puis recommencer le quiz.</span><br><br>
+          <a href="{% url teleforma-seminar-detail seminar.id %}" class="component_icon button icon_next">&nbsp;{% trans "Back" %} au séminaire</a>
          {% endif %}
        {% endif %}
 
index 91e9005ed2d0b76e6b4b73c31a6ae3967e60bd6b..024ab09a39592f5014d6c599266a947bba8e5543 100644 (file)
@@ -882,10 +882,20 @@ class QuizQuestionView(SeminarAccessMixin, SeminarRevisionMixin, QuizTake):
         user_id = self.request.user.id
         return User.objects.get(id=user_id)
 
+    def can_access(self):
+        user = self.get_user()
+        for items in [self.seminar.docs_1, self.seminar.medias]:
+            for item in items.all():
+                if item.weight:
+                    if user not in item.readers.all():
+                        return False
+        return True
+
     def get_context_data(self, **kwargs):
         context = super(QuizQuestionView, self).get_context_data(**kwargs)
         user = self.get_user()
         self.seminar = Seminar.objects.get(pk=self.kwargs['pk'])
+        context['can_access'] = self.can_access()
         context['seminar'] = self.seminar
         context['seminar_progress'] = seminar_progress(user, self.seminar)
         return context
@@ -902,6 +912,7 @@ class QuizQuestionView(SeminarAccessMixin, SeminarRevisionMixin, QuizTake):
             'sitting': self.sitting,
             'previous': self.previous,
             'seminar': self.seminar,
+            'can_access': True
         }
 
         self.sitting.mark_quiz_complete()
@@ -918,5 +929,10 @@ class QuizQuestionView(SeminarAccessMixin, SeminarRevisionMixin, QuizTake):
         if self.sitting.get_percent_correct >= self.quiz.pass_mark:
             validation = QuizValidation(user=user, quiz=self.seminar.quiz, validated=True)
             validation.save()
+        else:
+            # revert step 1 validation
+            for doc in self.seminar.docs_1.all():
+                doc.readers.remove(user)
+                doc.save()
 
         return render(self.request, 'quiz/result.html', results)