| import frappe |
| |
| import erpnext.education.utils as utils |
| |
| no_cache = 1 |
| |
| def get_context(context): |
| try: |
| course = frappe.form_dict['course'] |
| program = frappe.form_dict['program'] |
| topic = frappe.form_dict['topic'] |
| except KeyError: |
| frappe.local.flags.redirect_location = '/lms' |
| raise frappe.Redirect |
| |
| context.program = program |
| context.course = course |
| context.topic = frappe.get_doc("Topic", topic) |
| context.contents = get_contents(context.topic, course, program) |
| context.has_access = utils.allowed_program_access(program) |
| |
| def get_contents(topic, course, program): |
| student = utils.get_current_student() |
| if student: |
| course_enrollment = utils.get_or_create_course_enrollment(course, program) |
| contents = topic.get_contents() |
| progress = [] |
| if contents: |
| for content in contents: |
| if content.doctype in ('Article', 'Video'): |
| if student: |
| status = utils.check_content_completion(content.name, content.doctype, course_enrollment.name) |
| else: |
| status = True |
| progress.append({'content': content, 'content_type': content.doctype, 'completed': status}) |
| elif content.doctype == 'Quiz': |
| if student: |
| status, score, result, time_taken = utils.check_quiz_completion(content, course_enrollment.name) |
| else: |
| status = False |
| score = None |
| result = None |
| progress.append({'content': content, 'content_type': content.doctype, 'completed': status, 'score': score, 'result': result}) |
| |
| return progress |