diff --git a/community/lms/api.py b/community/lms/api.py index 089ad86d..b60d2d13 100644 --- a/community/lms/api.py +++ b/community/lms/api.py @@ -29,13 +29,13 @@ def submit_solution(exercise, code): return {"name": doc.name, "creation": doc.creation} @frappe.whitelist() -def save_current_lesson(batch_name, lesson_name): +def save_current_lesson(course_name, lesson_name): """Saves the current lesson for a student/mentor. """ name = frappe.get_value( doctype="LMS Batch Membership", filters={ - "batch": batch_name, + "course": course_name, "member": frappe.session.user }, fieldname="name") diff --git a/community/lms/doctype/lesson/lesson.py b/community/lms/doctype/lesson/lesson.py index c96d3315..53fe5d89 100644 --- a/community/lms/doctype/lesson/lesson.py +++ b/community/lms/doctype/lesson/lesson.py @@ -55,11 +55,11 @@ class Lesson(Document): return @frappe.whitelist() -def save_progress(lesson, batch): +def save_progress(lesson, course): if not frappe.db.exists("LMS Batch Membership", { "member": frappe.session.user, - "batch": batch + "course": course }): return if frappe.db.exists("LMS Course Progress", diff --git a/community/lms/doctype/lms_batch/lms_batch.py b/community/lms/doctype/lms_batch/lms_batch.py index 391eac7e..301f5f40 100644 --- a/community/lms/doctype/lms_batch/lms_batch.py +++ b/community/lms/doctype/lms_batch/lms_batch.py @@ -21,14 +21,6 @@ class LMSBatch(Document): def after_insert(self): create_membership(batch=self.name, member_type="Mentor") - def get_mentors(self): - memberships = frappe.get_all( - "LMS Batch Membership", - {"batch": self.name, "member_type": "Mentor"}, - ["member"]) - member_names = [m['member'] for m in memberships] - return find_all("User", name=["IN", member_names]) - def is_member(self, email, member_type=None): """Checks if a person is part of a batch. @@ -43,16 +35,6 @@ class LMSBatch(Document): filters['member_type'] = member_type return frappe.db.exists("LMS Batch Membership", filters) - def get_students(self): - """Returns (email, full_name, username) of all the students of this batch as a list of dict. - """ - memberships = frappe.get_all( - "LMS Batch Membership", - {"batch": self.name, "member_type": "Student"}, - ["member"]) - member_names = [m['member'] for m in memberships] - return find_all("User", name=["IN", member_names]) - def get_messages(self): messages = frappe.get_all("LMS Message", {"batch": self.name}, ["*"], order_by="creation") for message in messages: diff --git a/community/lms/doctype/lms_batch_membership/lms_batch_membership.py b/community/lms/doctype/lms_batch_membership/lms_batch_membership.py index e64cbeed..c170dc4b 100644 --- a/community/lms/doctype/lms_batch_membership/lms_batch_membership.py +++ b/community/lms/doctype/lms_batch_membership/lms_batch_membership.py @@ -44,10 +44,11 @@ class LMSBatchMembership(Document): frappe.throw(_("{0} is already a {1} of {2} course through {3} batch").format(member_name, membership.member_type, course, membership.batch)) @frappe.whitelist() -def create_membership(batch, member=None, member_type="Student", role="Member"): +def create_membership(course, batch=None, member=None, member_type="Student", role="Member"): frappe.get_doc({ "doctype": "LMS Batch Membership", "batch": batch, + "course": course, "role": role, "member_type": member_type, "member": member or frappe.session.user diff --git a/community/lms/doctype/lms_course/lms_course.py b/community/lms/doctype/lms_course/lms_course.py index c6dce996..4e70f2e3 100644 --- a/community/lms/doctype/lms_course/lms_course.py +++ b/community/lms/doctype/lms_course/lms_course.py @@ -82,11 +82,11 @@ class LMSCourse(Document): """ if not email: return False - return frappe.db.exists({ - "doctype": "LMS Course Mentor Mapping", - "course": self.name, - "mentor": email - }) + return frappe.db.count("LMS Course Mentor Mapping", + { + "course": self.name, + "mentor": email + }) def get_student_batch(self, email): """Returns the batch the given student is part of. @@ -192,13 +192,11 @@ class LMSCourse(Document): return return f"/courses/{self.name}/learn/{lesson_number}" - def get_current_batch(self, member): - current_membership = frappe.get_all("LMS Batch Membership", {"member": member, "course": self.name, "is_current": 1}, pluck="batch") - print(current_membership, member, self.name, frappe.session.user) + def get_current_membership(self, member): + current_membership = frappe.get_all("LMS Batch Membership", {"member": member, "course": self.name, "is_current": 1}, ["name", "batch"]) if len(current_membership): return current_membership[0] - print(frappe.db.get_value("LMS Batch Membership", {"member": member, "course": self.name}, "batch")) - return frappe.db.get_value("LMS Batch Membership", {"member": member, "course": self.name}, "batch") + return frappe.db.get_value("LMS Batch Membership", {"member": member, "course": self.name}, ["name","batch"], as_dict=True) def get_all_memberships(self, member=frappe.session.user): print(member, frappe.session.user) @@ -208,6 +206,38 @@ class LMSCourse(Document): membership.batch_title = frappe.db.get_value("LMS Batch", membership.batch, "title") return all_memberships + def get_mentors(self, batch): + filters = { + "course": self.name, + "member_type": "Mentor" + } + if batch: + filters["batch"] = batch + + print(filters) + memberships = frappe.get_all( + "LMS Batch Membership", + filters, + ["member"]) + member_names = [m['member'] for m in memberships] + return find_all("User", name=["IN", member_names]) + + def get_students(self, batch): + """Returns (email, full_name, username) of all the students of this batch as a list of dict. + """ + filters = { + "course": self.name, + "member_type": "Student" + } + if batch: + filters["batch"] = batch + memberships = frappe.get_all( + "LMS Batch Membership", + filters, + ["member"]) + member_names = [m['member'] for m in memberships] + return find_all("User", name=["IN", member_names]) + def get_outline(self): return CourseOutline(self) diff --git a/community/lms/widgets/BatchTabs.html b/community/lms/widgets/BatchTabs.html index a6778594..2c7dc758 100644 --- a/community/lms/widgets/BatchTabs.html +++ b/community/lms/widgets/BatchTabs.html @@ -17,13 +17,13 @@ {% endif %} -{% if not batch %} +{% if not membership %} {% set display_class = "hide" %} {% else %} {% set display_class = "" %} {% endif %}