feat: added topic progress api
This commit is contained in:
parent
8ddb63adae
commit
6d4c666476
@ -239,6 +239,25 @@ def get_quiz(quiz_name, course):
|
|||||||
status, score, result = check_quiz_completion(quiz, course_enrollment)
|
status, score, result = check_quiz_completion(quiz, course_enrollment)
|
||||||
return {'questions': questions, 'activity': {'is_complete': status, 'score': score, 'result': result}}
|
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():
|
def create_student_from_current_user():
|
||||||
user = frappe.get_doc("User", frappe.session.user)
|
user = frappe.get_doc("User", frappe.session.user)
|
||||||
|
|
||||||
|
@ -67,9 +67,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{% if has_access %}
|
{% if has_access %}
|
||||||
<div class='card-footer'>
|
<div class='card-footer'>
|
||||||
{% if index==1 %} <span class="indicator green"> Completed </span>
|
<span class="indicator {{ progress[topic.name].indicator }}"> {{ progress[topic.name].label }} </span>
|
||||||
{% else %} <span class="indicator orange"> Completed </span>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -9,5 +9,11 @@ def get_context(context):
|
|||||||
course = frappe.get_doc('Course', frappe.form_dict['name'])
|
course = frappe.get_doc('Course', frappe.form_dict['name'])
|
||||||
context.program = frappe.form_dict['program']
|
context.program = frappe.form_dict['program']
|
||||||
context.course = course
|
context.course = course
|
||||||
|
|
||||||
context.topics = course.get_topics()
|
context.topics = course.get_topics()
|
||||||
context.has_access = utils.allowed_program_access(context.program)
|
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user