diff --git a/school/lms/doctype/cohort_join_request/cohort_join_request.py b/school/lms/doctype/cohort_join_request/cohort_join_request.py index dde1f60f..95c975f8 100644 --- a/school/lms/doctype/cohort_join_request/cohort_join_request.py +++ b/school/lms/doctype/cohort_join_request/cohort_join_request.py @@ -10,25 +10,42 @@ class CohortJoinRequest(Document): self.ensure_student() def ensure_student(self): + # case 1 - user is already a member q = { "doctype": "LMS Batch Membership", "cohort": self.cohort, "subgroup": self.subgroup, - "email": self.email + "member": self.email, + "member_type": "Student" } if frappe.db.exists(q): return + # case 2 - user has signed up for this course, possibly not this cohort cohort = frappe.get_doc("Cohort", self.cohort) - data = { + q = { "doctype": "LMS Batch Membership", "course": cohort.course, - "cohort": self.cohort, - "subgroup": self.subgroup, "member": self.email, - "member_type": "Student", - "role": "Member" + "member_type": "Student" } - doc = frappe.get_doc(data) - doc.insert(ignore_permissions=True) + name = frappe.db.exists(q) + if name: + doc = frappe.get_doc("LMS Batch Membership", name) + doc.cohort = self.cohort + doc.subgroup = self.subgroup + doc.save(ignore_permissions=True) + else: + # case 3 - user has not signed up for this course yet + data = { + "doctype": "LMS Batch Membership", + "course": cohort.course, + "cohort": self.cohort, + "subgroup": self.subgroup, + "member": self.email, + "member_type": "Student", + "role": "Member" + } + doc = frappe.get_doc(data) + doc.insert(ignore_permissions=True)