From 3384f974e547eb5ebffa0b61c3c9e25b15f208f6 Mon Sep 17 00:00:00 2001 From: pateljannat Date: Tue, 22 Jun 2021 10:11:21 +0530 Subject: [PATCH] fix: batch switch with query parameters --- community/lms/doctype/lms_batch/lms_batch.py | 2 +- .../lms_batch_membership.json | 13 +----- .../lms_batch_membership.py | 16 ++++--- .../lms/doctype/lms_course/lms_course.json | 9 +++- .../lms/doctype/lms_course/lms_course.py | 18 ++++---- community/lms/widgets/BatchTabs.html | 42 +++++++------------ community/lms/widgets/ChapterTeaser.html | 2 +- community/lms/widgets/RenderBatch.html | 2 +- community/www/batch/join.html | 17 +------- community/www/batch/learn.html | 13 +++--- community/www/batch/learn.py | 6 +-- community/www/batch/progress.html | 2 +- community/www/batch/progress.py | 8 ++-- community/www/batch/utils.py | 15 ++++--- community/www/courses/course.html | 4 +- community/www/courses/course.js | 17 -------- community/www/courses/course.py | 11 +++-- 17 files changed, 83 insertions(+), 114 deletions(-) diff --git a/community/lms/doctype/lms_batch/lms_batch.py b/community/lms/doctype/lms_batch/lms_batch.py index 301f5f40..8ed2b990 100644 --- a/community/lms/doctype/lms_batch/lms_batch.py +++ b/community/lms/doctype/lms_batch/lms_batch.py @@ -19,7 +19,7 @@ class LMSBatch(Document): frappe.throw(_("You are not a mentor of the course {0}").format(course.title)) def after_insert(self): - create_membership(batch=self.name, member_type="Mentor") + create_membership(batch=self.name, course=self.course, member_type="Mentor") def is_member(self, email, member_type=None): """Checks if a person is part of a batch. diff --git a/community/lms/doctype/lms_batch_membership/lms_batch_membership.json b/community/lms/doctype/lms_batch_membership/lms_batch_membership.json index 6a0cc143..ba43cd69 100644 --- a/community/lms/doctype/lms_batch_membership/lms_batch_membership.json +++ b/community/lms/doctype/lms_batch_membership/lms_batch_membership.json @@ -13,8 +13,7 @@ "course", "member_type", "role", - "current_lesson", - "is_current" + "current_lesson" ], "fields": [ { @@ -81,19 +80,11 @@ "fieldtype": "Data", "label": "Memeber Username", "read_only": 1 - }, - { - "default": "0", - "fieldname": "is_current", - "fieldtype": "Check", - "hidden": 1, - "label": "Is Currently Being Used", - "read_only": 1 } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2021-06-14 10:24:35.425498", + "modified": "2021-06-21 12:10:28.808803", "modified_by": "Administrator", "module": "LMS", "name": "LMS Batch Membership", 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 c170dc4b..5dd33f09 100644 --- a/community/lms/doctype/lms_batch_membership/lms_batch_membership.py +++ b/community/lms/doctype/lms_batch_membership/lms_batch_membership.py @@ -14,18 +14,22 @@ class LMSBatchMembership(Document): self.validate_membership_in_different_batch_same_course() def validate_membership_in_same_batch(self): + filters={ + "member": self.member, + "course": self.course, + "name": ["!=", self.name] + } + if self.batch: + filters["batch"] = self.batch previous_membership = frappe.db.get_value("LMS Batch Membership", - filters={ - "member": self.member, - "batch": self.batch, - "name": ["!=", self.name] - }, + filters, fieldname=["member_type","member"], as_dict=1) if previous_membership: member_name = frappe.db.get_value("User", self.member, "full_name") - frappe.throw(_("{0} is already a {1} of {2}").format(member_name, previous_membership.member_type, self.batch)) + course_title = frappe.db.get_value("LMS Course", self.course, "title") + frappe.throw(_("{0} is already a {1} of the course {2}").format(member_name, previous_membership.member_type, course_title)) def validate_membership_in_different_batch_same_course(self): course = frappe.db.get_value("LMS Batch", self.batch, "course") diff --git a/community/lms/doctype/lms_course/lms_course.json b/community/lms/doctype/lms_course/lms_course.json index 187a24e1..8b46e3ec 100644 --- a/community/lms/doctype/lms_course/lms_course.json +++ b/community/lms/doctype/lms_course/lms_course.json @@ -22,6 +22,7 @@ "field_order": [ "title", "is_published", + "disable_self_learning", "column_break_3", "short_code", "video_link", @@ -73,6 +74,12 @@ "fieldtype": "Small Text", "label": "Short Introduction", "reqd": 1 + }, + { + "default": "0", + "fieldname": "disable_self_learning", + "fieldtype": "Check", + "label": "Disable Self Learning" } ], "index_web_pages_for_search": 1, @@ -99,7 +106,7 @@ "link_fieldname": "course" } ], - "modified": "2021-06-01 04:36:45.696776", + "modified": "2021-06-21 11:34:04.552376", "modified_by": "Administrator", "module": "LMS", "name": "LMS Course", diff --git a/community/lms/doctype/lms_course/lms_course.py b/community/lms/doctype/lms_course/lms_course.py index 4e70f2e3..0f3439ec 100644 --- a/community/lms/doctype/lms_course/lms_course.py +++ b/community/lms/doctype/lms_course/lms_course.py @@ -192,16 +192,17 @@ class LMSCourse(Document): return return f"/courses/{self.name}/learn/{lesson_number}" - 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] - return frappe.db.get_value("LMS Batch Membership", {"member": member, "course": self.name}, ["name","batch"], as_dict=True) + def get_membership(self, member, batch): + filters = { + "member": member, + "course": self.name + } + if batch: + filters["batch"] = batch + return frappe.db.get_value("LMS Batch Membership", filters, ["name","batch", "current_lesson"], as_dict=True) def get_all_memberships(self, member=frappe.session.user): - print(member, frappe.session.user) - all_memberships = frappe.get_all("LMS Batch Membership", {"member": member, "course": self.name}, ["batch", "is_current"]) - print(all_memberships) + all_memberships = frappe.get_all("LMS Batch Membership", {"member": member, "course": self.name}, ["batch"]) for membership in all_memberships: membership.batch_title = frappe.db.get_value("LMS Batch", membership.batch, "title") return all_memberships @@ -214,7 +215,6 @@ class LMSCourse(Document): if batch: filters["batch"] = batch - print(filters) memberships = frappe.get_all( "LMS Batch Membership", filters, diff --git a/community/lms/widgets/BatchTabs.html b/community/lms/widgets/BatchTabs.html index 2c7dc758..2a5fc913 100644 --- a/community/lms/widgets/BatchTabs.html +++ b/community/lms/widgets/BatchTabs.html @@ -4,14 +4,14 @@ {{ course.title }} {% endif %} {% set all_memberships = course.get_all_memberships() %} {% if all_memberships | length > 1 %} - @@ -22,18 +22,21 @@ {% else %} {% set display_class = "" %} {% endif %} + +{% block script %} +{% endblock %} diff --git a/community/lms/widgets/ChapterTeaser.html b/community/lms/widgets/ChapterTeaser.html index 505c2d96..b4a0179f 100644 --- a/community/lms/widgets/ChapterTeaser.html +++ b/community/lms/widgets/ChapterTeaser.html @@ -8,7 +8,7 @@ {% for lesson in chapter.get_lessons() %}
{{ lesson.title }} {% if show_progress and not course.is_mentor(frappe.session.user) and lesson.get_progress() %} {{ lesson.get_progress() }} diff --git a/community/lms/widgets/RenderBatch.html b/community/lms/widgets/RenderBatch.html index 05bce4b7..bb70c2c5 100644 --- a/community/lms/widgets/RenderBatch.html +++ b/community/lms/widgets/RenderBatch.html @@ -18,7 +18,7 @@
{% if can_manage %} - Manage {% elif can_join %} +
+ {% endif %}
{{ course.short_introduction }}
diff --git a/community/www/courses/course.js b/community/www/courses/course.js index 308b9636..f2cad0a2 100644 --- a/community/www/courses/course.js +++ b/community/www/courses/course.js @@ -75,21 +75,4 @@ frappe.ready(() => { } }) }) - - $(".manage-batch").click((e) => { - e.preventDefault(); - var batch = decodeURIComponent($(e.currentTarget).attr("data-batch")); - var course = decodeURIComponent($(e.currentTarget).attr("data-course")); - frappe.call({ - method: "community.lms.doctype.lms_batch_membership.lms_batch_membership.update_current_membership", - args: { - batch: batch, - course: course, - member: frappe.session.user - }, - callback: (data) => { - window.location.href = `/courses/${course}/home`; - } - }) - }) }) diff --git a/community/www/courses/course.py b/community/www/courses/course.py index e2ff459f..3bc2f50f 100644 --- a/community/www/courses/course.py +++ b/community/www/courses/course.py @@ -16,9 +16,8 @@ def get_context(context): raise frappe.Redirect context.course = course - - batch = course.get_student_batch(frappe.session.user) - if batch: - frappe.local.flags.redirect_location = f"/courses/{course.name}/learn" - raise frappe.Redirect - + if not course.is_mentor(frappe.session.user): + batch = course.get_membership(frappe.session.user) + if batch: + frappe.local.flags.redirect_location = f"/courses/{course.name}/learn" + raise frappe.Redirect