Shivam Mishra | d69892a | 2019-06-05 19:42:30 +0530 | [diff] [blame] | 1 | import frappe |
| 2 | |
Chillar Anand | 915b343 | 2021-09-02 16:44:59 +0530 | [diff] [blame] | 3 | import erpnext.education.utils as utils |
| 4 | |
Shivam Mishra | d69892a | 2019-06-05 19:42:30 +0530 | [diff] [blame] | 5 | no_cache = 1 |
| 6 | |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 7 | |
Shivam Mishra | d69892a | 2019-06-05 19:42:30 +0530 | [diff] [blame] | 8 | def get_context(context): |
Shivam Mishra | 147d5d9 | 2019-06-12 16:01:02 +0530 | [diff] [blame] | 9 | try: |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 10 | course = frappe.form_dict["course"] |
| 11 | program = frappe.form_dict["program"] |
| 12 | topic = frappe.form_dict["topic"] |
Shivam Mishra | 147d5d9 | 2019-06-12 16:01:02 +0530 | [diff] [blame] | 13 | except KeyError: |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 14 | frappe.local.flags.redirect_location = "/lms" |
Shivam Mishra | 147d5d9 | 2019-06-12 16:01:02 +0530 | [diff] [blame] | 15 | raise frappe.Redirect |
Shivam Mishra | d69892a | 2019-06-05 19:42:30 +0530 | [diff] [blame] | 16 | |
| 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 Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 21 | context.has_access = utils.allowed_program_access(program) |
| 22 | |
Shivam Mishra | d69892a | 2019-06-05 19:42:30 +0530 | [diff] [blame] | 23 | |
| 24 | def get_contents(topic, course, program): |
| 25 | student = utils.get_current_student() |
Shivam Mishra | 09cd46f | 2019-06-06 14:02:49 +0530 | [diff] [blame] | 26 | if student: |
| 27 | course_enrollment = utils.get_or_create_course_enrollment(course, program) |
Shivam Mishra | d69892a | 2019-06-05 19:42:30 +0530 | [diff] [blame] | 28 | contents = topic.get_contents() |
| 29 | progress = [] |
| 30 | if contents: |
| 31 | for content in contents: |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 32 | if content.doctype in ("Article", "Video"): |
Shivam Mishra | 09cd46f | 2019-06-06 14:02:49 +0530 | [diff] [blame] | 33 | if student: |
| 34 | status = utils.check_content_completion(content.name, content.doctype, course_enrollment.name) |
| 35 | else: |
| 36 | status = True |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 37 | progress.append({"content": content, "content_type": content.doctype, "completed": status}) |
| 38 | elif content.doctype == "Quiz": |
Shivam Mishra | 09cd46f | 2019-06-06 14:02:49 +0530 | [diff] [blame] | 39 | if student: |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 40 | status, score, result, time_taken = utils.check_quiz_completion( |
| 41 | content, course_enrollment.name |
| 42 | ) |
Shivam Mishra | 09cd46f | 2019-06-06 14:02:49 +0530 | [diff] [blame] | 43 | else: |
| 44 | status = False |
| 45 | score = None |
| 46 | result = None |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 47 | progress.append( |
| 48 | { |
| 49 | "content": content, |
| 50 | "content_type": content.doctype, |
| 51 | "completed": status, |
| 52 | "score": score, |
| 53 | "result": result, |
| 54 | } |
| 55 | ) |
Shivam Mishra | d69892a | 2019-06-05 19:42:30 +0530 | [diff] [blame] | 56 | |
Ankush Menat | 4551d7d | 2021-08-19 13:41:10 +0530 | [diff] [blame] | 57 | return progress |