From b277f9191bf8720533901e58db36851675b8f430 Mon Sep 17 00:00:00 2001
From: maheshgudi
Date: Fri, 3 Feb 2017 01:28:50 +0530
Subject: added skip question feature. closes #191

The can_skip_questions attribute is to be set True for students to be able to skip questions.
If it is set as False, students wont be able to skip to the next question.
---
 yaksh/models.py                     | 4 ++++
 yaksh/templates/exam.html           | 4 ++++
 yaksh/templates/yaksh/question.html | 5 ++++-
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/yaksh/models.py b/yaksh/models.py
index b917889..b2ba91f 100644
--- a/yaksh/models.py
+++ b/yaksh/models.py
@@ -580,6 +580,10 @@ class Quiz(models.Model):
     view_answerpaper = models.BooleanField('Allow student to view their answer\
                                             paper', default=False)
 
+    can_skip_questions = models.BooleanField("Allow students to skip questions",
+                                             default=True
+                                             )
+
     objects = QuizManager()
 
     class Meta:
diff --git a/yaksh/templates/exam.html b/yaksh/templates/exam.html
index 101f3f3..00633a3 100644
--- a/yaksh/templates/exam.html
+++ b/yaksh/templates/exam.html
@@ -31,6 +31,7 @@
         <p> Question Navigator </p>
         <ul class="pagination pagination-sm">
             {% for qid in paper.questions.all %}
+                {%if paper.question_paper.quiz.can_skip_questions%}
                 {% if qid in paper.questions_unanswered.all %}
                 {% if qid.id == question.id %}
                 <li class="active"><a style="width:25%" href="#"data-toggle="tooltip"
@@ -44,6 +45,9 @@
                 {% if qid in paper.questions_answered.all %}
                 <li class="disabled"><a style="background-color:#B4B8BA; width:25%" href="#" data-toggle="tooltip" title="{{ qid.description }}" >{{ forloop.counter }}</a></li>
                 {% endif %}
+                {% else %}
+                <li><a style="width:25%" href="#" data-toggle="tooltip" title="{{ qid.description|striptags }}">{{ forloop.counter }}</a></li>
+                {% endif %}
                 {% endfor %}
             </ul>
             <p>Question(s) left: <b>{{ paper.questions_left }}</b></p>
diff --git a/yaksh/templates/yaksh/question.html b/yaksh/templates/yaksh/question.html
index 41634f2..8fea8b3 100644
--- a/yaksh/templates/yaksh/question.html
+++ b/yaksh/templates/yaksh/question.html
@@ -199,14 +199,17 @@ function call_skip(url)
          {% else %}
          <button class="btn btn-primary" type="submit" name="check" id="check" onClick="submitCode();">Check Answer <span class="glyphicon glyphicon-cog"></span></button>&nbsp;&nbsp;
          {% endif %}
+         {% if paper.question_paper.quiz.can_skip_questions %}
          {% if paper.unanswered.all|length != 1 %}
          <button class="btn btn-primary"  onclick="call_skip('{{ URL_ROOT }}/exam/{{ question.id }}/skip/{{ paper.attempt_number }}/{{ paper.question_paper.id }}/')" name="skip" id="skip">Attempt Later <span class="glyphicon glyphicon-arrow-right"></span></button>
-         {% endif %}
          </div>
                  </div>
              </div>
 
          </form>
+         {% endif %}
+         {% endif %}
+         
     <!-- Modal -->
     <div class="modal fade " id="upload_alert" >
       <div class="modal-dialog">
-- 
cgit 


From 1d5cd5253b125eb6406dd67e9f267c208658bcfc Mon Sep 17 00:00:00 2001
From: maheshgudi
Date: Fri, 3 Feb 2017 14:40:50 +0530
Subject: renamed quiz model attribute from can_skip_questions to allow_skip

---
 yaksh/models.py                     |  5 ++---
 yaksh/templates/exam.html           | 12 ++++++++----
 yaksh/templates/yaksh/question.html |  4 +---
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/yaksh/models.py b/yaksh/models.py
index b2ba91f..f5c1129 100644
--- a/yaksh/models.py
+++ b/yaksh/models.py
@@ -580,9 +580,8 @@ class Quiz(models.Model):
     view_answerpaper = models.BooleanField('Allow student to view their answer\
                                             paper', default=False)
 
-    can_skip_questions = models.BooleanField("Allow students to skip questions",
-                                             default=True
-                                             )
+    allow_skip = models.BooleanField("Allow students to skip questions",
+                                     default=True)
 
     objects = QuizManager()
 
diff --git a/yaksh/templates/exam.html b/yaksh/templates/exam.html
index 00633a3..dfcaf2d 100644
--- a/yaksh/templates/exam.html
+++ b/yaksh/templates/exam.html
@@ -31,8 +31,8 @@
         <p> Question Navigator </p>
         <ul class="pagination pagination-sm">
             {% for qid in paper.questions.all %}
-                {%if paper.question_paper.quiz.can_skip_questions%}
-                {% if qid in paper.questions_unanswered.all %}
+                {%if paper.question_paper.quiz.allow_skip %}
+                {% if qid in paper.get_questions_unanswered %}
                 {% if qid.id == question.id %}
                 <li class="active"><a style="width:25%" href="#"data-toggle="tooltip"
                     title="{{ qid.description|striptags }}"
@@ -42,11 +42,15 @@
                     onclick="call_skip('{{ URL_ROOT }}/exam/{{ question.id }}/skip/{{ qid.id }}/{{ paper.attempt_number }}/{{ paper.question_paper.id }}/')">{{ forloop.counter }}</a></li>
                 {% endif %}
                 {% endif %}
-                {% if qid in paper.questions_answered.all %}
+                {% if qid in paper.get_questions_answered %}
                 <li class="disabled"><a style="background-color:#B4B8BA; width:25%" href="#" data-toggle="tooltip" title="{{ qid.description }}" >{{ forloop.counter }}</a></li>
                 {% endif %}
                 {% else %}
-                <li><a style="width:25%" href="#" data-toggle="tooltip" title="{{ qid.description|striptags }}">{{ forloop.counter }}</a></li>
+                {% if qid.id == question.id %}
+                <li class="active"><a style="width:25%" data-toggle="tooltip" title="{{ qid.description|striptags }}">{{ forloop.counter }}</a></li>
+                {% else %}
+                <li  class="disabled"><a style="width:25%" data-toggle="tooltip" title="{{ qid.description|striptags }}">{{ forloop.counter }}</a></li>
+                {% endif %}
                 {% endif %}
                 {% endfor %}
             </ul>
diff --git a/yaksh/templates/yaksh/question.html b/yaksh/templates/yaksh/question.html
index 8fea8b3..6218b18 100644
--- a/yaksh/templates/yaksh/question.html
+++ b/yaksh/templates/yaksh/question.html
@@ -199,8 +199,7 @@ function call_skip(url)
          {% else %}
          <button class="btn btn-primary" type="submit" name="check" id="check" onClick="submitCode();">Check Answer <span class="glyphicon glyphicon-cog"></span></button>&nbsp;&nbsp;
          {% endif %}
-         {% if paper.question_paper.quiz.can_skip_questions %}
-         {% if paper.unanswered.all|length != 1 %}
+         {% if paper.question_paper.quiz.allow_skip and not paper.get_questions_unanswered|length_is:"1" %}
          <button class="btn btn-primary"  onclick="call_skip('{{ URL_ROOT }}/exam/{{ question.id }}/skip/{{ paper.attempt_number }}/{{ paper.question_paper.id }}/')" name="skip" id="skip">Attempt Later <span class="glyphicon glyphicon-arrow-right"></span></button>
          </div>
                  </div>
@@ -208,7 +207,6 @@ function call_skip(url)
 
          </form>
          {% endif %}
-         {% endif %}
          
     <!-- Modal -->
     <div class="modal fade " id="upload_alert" >
-- 
cgit