feat: course creation page structure

This commit is contained in:
Jannat Patel
2024-02-27 20:41:02 +05:30
parent 5317aa8fb5
commit 60a917e60c
13 changed files with 263 additions and 74 deletions

View File

@@ -87,13 +87,32 @@ class CourseLesson(Document):
@frappe.whitelist()
def save_progress(lesson, course, status):
def save_progress(lesson, course):
membership = frappe.db.exists(
"LMS Enrollment", {"member": frappe.session.user, "course": course}
)
if not membership:
return 0
quiz_completed = get_quiz_progress(lesson)
if not quiz_completed:
return 0
frappe.get_doc(
{
"doctype": "LMS Course Progress",
"lesson": lesson,
"status": "Complete",
"member": frappe.session.user,
}
).save(ignore_permissions=True)
progress = get_course_progress(course)
frappe.db.set_value("LMS Enrollment", membership, "progress", progress)
return progress
def get_quiz_progress(lesson):
body = frappe.db.get_value("Course Lesson", lesson, "body")
macros = find_macros(body)
quizzes = [value for name, value in macros if name == "Quiz"]
@@ -108,26 +127,9 @@ def save_progress(lesson, course, status):
"percentage": [">=", passing_percentage],
},
):
return 0
return False
filters = {"lesson": lesson, "owner": frappe.session.user, "course": course}
if frappe.db.exists("LMS Course Progress", filters):
doc = frappe.get_doc("LMS Course Progress", filters)
doc.status = status
doc.save(ignore_permissions=True)
else:
frappe.get_doc(
{
"doctype": "LMS Course Progress",
"lesson": lesson,
"status": status,
"member": frappe.session.user,
}
).save(ignore_permissions=True)
progress = get_course_progress(course)
frappe.db.set_value("LMS Enrollment", membership, "progress", progress)
return progress
return True
@frappe.whitelist()

View File

@@ -67,7 +67,7 @@
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2022-11-09 14:24:06.312623",
"modified": "2024-02-27 11:43:08.326886",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Course Progress",
@@ -84,6 +84,16 @@
"role": "System Manager",
"share": 1,
"write": 1
},
{
"create": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "LMS Student",
"share": 1
}
],
"sort_field": "modified",

View File

@@ -122,7 +122,7 @@
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2023-12-27 12:21:19.289520",
"modified": "2024-02-27 13:04:00.785182",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Quiz",

View File

@@ -110,7 +110,7 @@
"in_create": 1,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2024-01-01 15:53:33.357595",
"modified": "2024-02-27 13:01:53.611726",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Quiz Submission",
@@ -132,7 +132,6 @@
"create": 1,
"email": 1,
"export": 1,
"if_owner": 1,
"print": 1,
"read": 1,
"report": 1,

View File

@@ -1341,11 +1341,20 @@ def get_lesson(course, chapter, lesson):
],
as_dict=True,
)
if frappe.session.user == "Guest":
progress = 0
else:
progress = get_progress(course, lesson_details.name)
lesson_details.rendered_content = render_html(lesson_details)
neighbours = get_neighbour_lesson(course, chapter, lesson)
lesson_details.next = neighbours["next"]
lesson_details.progress = progress
lesson_details.prev = neighbours["prev"]
lesson_details.membership = membership
lesson_details.instructors = get_instructors(course)
lesson_details.course_title = frappe.db.get_value("LMS Course", course, "title")
return lesson_details