Browse Source

fix: Quiz timer (#25983)

* fix: quiz timer

* fix: pass time bound parameter

* fix: sider
develop
Jannat Patel 3 years ago
committed by GitHub
parent
commit
6b8c123fd9
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      erpnext/education/doctype/course_enrollment/course_enrollment.py
  2. 13
      erpnext/education/utils.py
  3. 8
      erpnext/public/js/education/lms/quiz.js
  4. 1
      erpnext/www/lms/content.html

2
erpnext/education/doctype/course_enrollment/course_enrollment.py

@ -91,4 +91,4 @@ def check_activity_exists(enrollment, content_type, content):
if activity:
return activity[0].name
else:
return None
return None

13
erpnext/education/utils.py

@ -219,7 +219,6 @@ def get_quiz(quiz_name, course):
try:
quiz = frappe.get_doc("Quiz", quiz_name)
questions = quiz.get_questions()
duration = quiz.duration
except:
frappe.throw(_("Quiz {0} does not exist").format(quiz_name), frappe.DoesNotExistError)
return None
@ -236,15 +235,17 @@ def get_quiz(quiz_name, course):
return {
'questions': questions,
'activity': None,
'duration':duration
'is_time_bound': quiz.is_time_bound,
'duration':quiz.duration
}
student = get_current_student()
course_enrollment = get_enrollment("course", course, student.name)
status, score, result, time_taken = check_quiz_completion(quiz, course_enrollment)
return {
'questions': questions,
'questions': questions,
'activity': {'is_complete': status, 'score': score, 'result': result, 'time_taken': time_taken},
'is_time_bound': quiz.is_time_bound,
'duration': quiz.duration
}
@ -372,9 +373,9 @@ def check_content_completion(content_name, content_type, enrollment_name):
def check_quiz_completion(quiz, enrollment_name):
attempts = frappe.get_all("Quiz Activity",
filters={
'enrollment': enrollment_name,
'enrollment': enrollment_name,
'quiz': quiz.name
},
},
fields=["name", "activity_date", "score", "status", "time_taken"]
)
status = False if quiz.max_attempts == 0 else bool(len(attempts) >= quiz.max_attempts)
@ -389,4 +390,4 @@ def check_quiz_completion(quiz, enrollment_name):
time_taken = attempts[0]['time_taken']
if result == 'Pass':
status = True
return status, score, result, time_taken
return status, score, result, time_taken

8
erpnext/public/js/education/lms/quiz.js

@ -20,10 +20,8 @@ class Quiz {
}
make(data) {
if (data.duration) {
const timer_display = document.createElement("div");
timer_display.classList.add("lms-timer", "float-right", "font-weight-bold");
document.getElementsByClassName("lms-title")[0].appendChild(timer_display);
if (data.is_time_bound) {
$(".lms-timer").removeClass("hide");
if (!data.activity || (data.activity && !data.activity.is_complete)) {
this.initialiseTimer(data.duration);
this.is_time_bound = true;
@ -237,4 +235,4 @@ class Question {
this.options = option_list
this.wrapper.appendChild(options_wrapper)
}
}
}

1
erpnext/www/lms/content.html

@ -64,6 +64,7 @@
</div>
<div class="lms-title">
<h2>{{ content.name }} <span class="small text-muted">({{ position + 1 }}/{{length}})</span></h2>
<div class="lms-timer float-right fond-weight-bold hide"></div>
</div>
{% endmacro %}

Loading…
Cancel
Save