diff --git a/erpnext/education/utils.py b/erpnext/education/utils.py index 96fb4eed8b8..3abb8409147 100644 --- a/erpnext/education/utils.py +++ b/erpnext/education/utils.py @@ -239,6 +239,25 @@ def get_quiz(quiz_name, course): status, score, result = check_quiz_completion(quiz, course_enrollment) return {'questions': questions, 'activity': {'is_complete': status, 'score': score, 'result': result}} +def get_student_topic_details(topic, course_name, program): + """ + Return the porgress of a course in a program as well as the content to continue from. + :param topic_name: + :param course_name: + """ + student = get_current_student() + course_enrollment = get_or_create_course_enrollment(course_name, program) + progress = student.get_topic_progress(course_enrollment.name, topic) + if not progress: + return {'label':'Open', 'indicator': 'blue'} + count = sum([activity['is_complete'] for activity in progress]) + if count == 0: + return {'label':'Open', 'indicator': 'blue'} + elif count == len(progress): + return {'label':'Completed', 'indicator': 'green'} + elif count < len(progress): + return {'label':'In Progress', 'indicator': 'orange'} + def create_student_from_current_user(): user = frappe.get_doc("User", frappe.session.user) diff --git a/erpnext/www/lms/course.html b/erpnext/www/lms/course.html index ee3b9758cb6..199fc169e5a 100644 --- a/erpnext/www/lms/course.html +++ b/erpnext/www/lms/course.html @@ -67,9 +67,7 @@ {% if has_access %}
{% else %} diff --git a/erpnext/www/lms/course.py b/erpnext/www/lms/course.py index b9aff5c5bd4..f59c28cf7e5 100644 --- a/erpnext/www/lms/course.py +++ b/erpnext/www/lms/course.py @@ -9,5 +9,11 @@ def get_context(context): course = frappe.get_doc('Course', frappe.form_dict['name']) context.program = frappe.form_dict['program'] context.course = course + context.topics = course.get_topics() - context.has_access = utils.allowed_program_access(context.program) \ No newline at end of file + context.has_access = utils.allowed_program_access(context.program) + context.progress = get_topic_progress(context.topics, course, context.program) + +def get_topic_progress(topics, course, program): + progress = {topic.name: utils.get_student_topic_details(topic, course.name, program) for topic in topics} + return progress