blob: 7783211a41b2ae36093fd257ea93f0fc71061604 [file] [log] [blame]
Shivam Mishrad69892a2019-06-05 19:42:30 +05301import frappe
2
Chillar Anand915b3432021-09-02 16:44:59 +05303import erpnext.education.utils as utils
4
Shivam Mishrad69892a2019-06-05 19:42:30 +05305no_cache = 1
6
Ankush Menat494bd9e2022-03-28 18:52:46 +05307
Shivam Mishrad69892a2019-06-05 19:42:30 +05308def get_context(context):
Shivam Mishra147d5d92019-06-12 16:01:02 +05309 try:
Ankush Menat494bd9e2022-03-28 18:52:46 +053010 course = frappe.form_dict["course"]
11 program = frappe.form_dict["program"]
12 topic = frappe.form_dict["topic"]
Shivam Mishra147d5d92019-06-12 16:01:02 +053013 except KeyError:
Ankush Menat494bd9e2022-03-28 18:52:46 +053014 frappe.local.flags.redirect_location = "/lms"
Shivam Mishra147d5d92019-06-12 16:01:02 +053015 raise frappe.Redirect
Shivam Mishrad69892a2019-06-05 19:42:30 +053016
17 context.program = program
18 context.course = course
19 context.topic = frappe.get_doc("Topic", topic)
20 context.contents = get_contents(context.topic, course, program)
Ankush Menat494bd9e2022-03-28 18:52:46 +053021 context.has_access = utils.allowed_program_access(program)
22
Shivam Mishrad69892a2019-06-05 19:42:30 +053023
24def get_contents(topic, course, program):
25 student = utils.get_current_student()
Shivam Mishra09cd46f2019-06-06 14:02:49 +053026 if student:
27 course_enrollment = utils.get_or_create_course_enrollment(course, program)
Shivam Mishrad69892a2019-06-05 19:42:30 +053028 contents = topic.get_contents()
29 progress = []
30 if contents:
31 for content in contents:
Ankush Menat494bd9e2022-03-28 18:52:46 +053032 if content.doctype in ("Article", "Video"):
Shivam Mishra09cd46f2019-06-06 14:02:49 +053033 if student:
34 status = utils.check_content_completion(content.name, content.doctype, course_enrollment.name)
35 else:
36 status = True
Ankush Menat494bd9e2022-03-28 18:52:46 +053037 progress.append({"content": content, "content_type": content.doctype, "completed": status})
38 elif content.doctype == "Quiz":
Shivam Mishra09cd46f2019-06-06 14:02:49 +053039 if student:
Ankush Menat494bd9e2022-03-28 18:52:46 +053040 status, score, result, time_taken = utils.check_quiz_completion(
41 content, course_enrollment.name
42 )
Shivam Mishra09cd46f2019-06-06 14:02:49 +053043 else:
44 status = False
45 score = None
46 result = None
Ankush Menat494bd9e2022-03-28 18:52:46 +053047 progress.append(
48 {
49 "content": content,
50 "content_type": content.doctype,
51 "completed": status,
52 "score": score,
53 "result": result,
54 }
55 )
Shivam Mishrad69892a2019-06-05 19:42:30 +053056
Ankush Menat4551d7d2021-08-19 13:41:10 +053057 return progress