diff options
Diffstat (limited to 'yaksh')
-rw-r--r-- | yaksh/models.py | 9 | ||||
-rw-r--r-- | yaksh/templates/yaksh/monitor.html | 20 | ||||
-rw-r--r-- | yaksh/views.py | 13 |
3 files changed, 26 insertions, 16 deletions
diff --git a/yaksh/models.py b/yaksh/models.py index 8297ec8..dc08307 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -2235,7 +2235,14 @@ class AnswerPaper(models.Model): return questions def set_extra_time(self, time=0): - self.extra_time = time + now = timezone.now() + self.extra_time += time + if self.status == 'completed' and self.end_time < now: + self.extra_time = time + quiz_time = self.question_paper.quiz.duration + self.start_time = now - timezone.timedelta(minutes=quiz_time) + self.end_time = now + timezone.timedelta(minutes=time) + self.status = 'inprogress' self.save() def time_left(self): diff --git a/yaksh/templates/yaksh/monitor.html b/yaksh/templates/yaksh/monitor.html index 183ba99..0a8e3e9 100644 --- a/yaksh/templates/yaksh/monitor.html +++ b/yaksh/templates/yaksh/monitor.html @@ -116,6 +116,7 @@ $(document).ready(function() <th> Attempts <i class="fa fa-sort"></i> </th> <th> Time Left <i class="fa fa-sort"></i> </th> <th> Status <i class="fa fa-sort"></i> </th> + <th> Extend time <i class="fa fa-sort"></i> </th> <th> Special Attempt <i class="fa fa-sort"></i> </th> </tr> </thead> @@ -132,18 +133,21 @@ $(document).ready(function() <td> {{ paper.answers.count }} </td> <td id="time_left{{forloop.counter0}}"> {{ paper.time_left }} </td> <td> {% if paper.is_attempt_inprogress %} - <form method="post" action="{% url 'yaksh:extend_time' paper.id %}"> - {% csrf_token %} - <div class="form-group"> - <label for="extra_time"> Time in mins </label> - <input type="number" class="form-control" id="extra_time" name="extra_time" required> - </div> - <button type="submit" class="btn btn-primary">Extend Time</button> - </form> + <span class="badge badge-secondary"> Inprogress </span> {% else %} <span class="badge badge-secondary"> Completed </span> {% endif %} </td> + <td> + <form method="post" action="{% url 'yaksh:extend_time' paper.id %}"> + {% csrf_token %} + <div class="form-group"> + <label for="extra_time"> Time in mins </label> + <input type="number" step="any" class="form-control" id="extra_time" name="extra_time" required> + </div> + <button type="submit" class="btn btn-primary">Extend Time</button> + </form> + </td> <td>{% specail_attempt_monitor paper.user.id course.id quiz.id %}</td> </tr> {% endfor %} diff --git a/yaksh/views.py b/yaksh/views.py index a8f0d23..41f367d 100644 --- a/yaksh/views.py +++ b/yaksh/views.py @@ -3529,8 +3529,7 @@ def allow_special_attempt(request, user_id, course_id, quiz_id): student.get_full_name()) messages.info(request, msg) - return my_redirect('/exam/manage/monitor/{0}/{1}/'.format(quiz_id, - course_id)) + return redirect('yaksh:monitor', quiz_id, course_id) @login_required @@ -3549,8 +3548,8 @@ def revoke_special_attempt(request, micromanager_id): msg = 'Revoked special attempt for {}'.format( micromanager.student.get_full_name()) messages.info(request, msg) - return my_redirect('/exam/manage/monitor/{0}/{1}/'.format( - micromanager.quiz.id, course.id)) + return redirect( + 'yaksh:monitor', micromanager.quiz.id, course.id) @login_required @@ -3567,7 +3566,7 @@ def extend_time(request, paper_id): raise Http404('This course does not belong to you') if request.method == "POST": - extra_time = request.POST.get('extra_time', None) + extra_time = float(request.POST.get('extra_time', 0)) if extra_time is None: msg = 'Please provide time' else: @@ -3577,5 +3576,5 @@ def extend_time(request, paper_id): else: msg = 'Bad Request' messages.info(request, msg) - return my_redirect('/exam/manage/monitor/{0}/{1}/'.format( - anspaper.question_paper.quiz.id, course.id)) + return redirect( + 'yaksh:monitor', anspaper.question_paper.quiz.id, course.id) |