diff --git a/community/lms/doctype/lms_batch/lms_batch.json b/community/lms/doctype/lms_batch/lms_batch.json
index d03edaaa..aef7e1f0 100644
--- a/community/lms/doctype/lms_batch/lms_batch.json
+++ b/community/lms/doctype/lms_batch/lms_batch.json
@@ -99,10 +99,9 @@
"label": "Start Time"
},
{
- "description": "Enter Days of the week comma separated.",
"fieldname": "sessions_on",
"fieldtype": "Data",
- "label": "Sessions On"
+ "label": "Sessions On Days"
},
{
"fieldname": "end_time",
@@ -112,7 +111,7 @@
],
"index_web_pages_for_search": 1,
"links": [],
- "modified": "2021-04-15 10:52:24.358628",
+ "modified": "2021-04-21 10:21:23.183399",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Batch",
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 913b206e..87ae7962 100644
--- a/community/lms/doctype/lms_batch_membership/lms_batch_membership.py
+++ b/community/lms/doctype/lms_batch_membership/lms_batch_membership.py
@@ -29,7 +29,7 @@ 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_member(batch, member=None, member_type="Student", role="Member"):
+def create_membership(batch, member=None, member_type="Student", role="Member"):
if not member:
member = frappe.db.get_value("Community Member", {"email": frappe.session.user}, "name")
frappe.get_doc({
diff --git a/community/lms/doctype/lms_course_mentor_mapping/lms_course_mentor_mapping.py b/community/lms/doctype/lms_course_mentor_mapping/lms_course_mentor_mapping.py
index 33ff05b0..c5cc58e7 100644
--- a/community/lms/doctype/lms_course_mentor_mapping/lms_course_mentor_mapping.py
+++ b/community/lms/doctype/lms_course_mentor_mapping/lms_course_mentor_mapping.py
@@ -3,8 +3,16 @@
# For license information, please see license.txt
from __future__ import unicode_literals
-# import frappe
+import frappe
from frappe.model.document import Document
+from frappe import _
class LMSCourseMentorMapping(Document):
- pass
+ def validate(self):
+ duplicate_mapping = frappe.get_all("LMS Course Mentor Mapping",
+ filters = {
+ "course": self.course,
+ "mentor": self.mentor
+ })
+ if len(duplicate_mapping):
+ frappe.throw(_("{0} is already a mentor for course {1}").format(self.mentor_name, self.course))
diff --git a/community/lms/web_form/add_a_new_batch/add_a_new_batch.js b/community/lms/web_form/add_a_new_batch/add_a_new_batch.js
index 699703c5..808b6bc0 100644
--- a/community/lms/web_form/add_a_new_batch/add_a_new_batch.js
+++ b/community/lms/web_form/add_a_new_batch/add_a_new_batch.js
@@ -1,3 +1,17 @@
frappe.ready(function() {
- // bind events here
+ frappe.web_form.after_save = () => {
+ let data = frappe.web_form.get_values();
+ frappe.call({
+ "method": "community.lms.doctype.lms_batch_membership.lms_batch_membership.create_membership",
+ "args": {
+ "batch": data.title,
+ "member_type": "Mentor"
+ },
+ "callback": (data) => {
+ if (data.message == "OK") {
+ window.location.href = "/courses"
+ }
+ }
+ })
+ }
})
\ No newline at end of file
diff --git a/community/lms/web_form/add_a_new_batch/add_a_new_batch.json b/community/lms/web_form/add_a_new_batch/add_a_new_batch.json
index b2db5878..8f027787 100644
--- a/community/lms/web_form/add_a_new_batch/add_a_new_batch.json
+++ b/community/lms/web_form/add_a_new_batch/add_a_new_batch.json
@@ -18,7 +18,7 @@
"is_standard": 1,
"login_required": 1,
"max_attachment_size": 0,
- "modified": "2021-04-20 11:51:35.815876",
+ "modified": "2021-04-21 10:22:38.461088",
"modified_by": "Administrator",
"module": "LMS",
"name": "add-a-new-batch",
@@ -64,7 +64,7 @@
"fieldname": "start_time",
"fieldtype": "Data",
"hidden": 0,
- "label": "Start Time",
+ "label": "Start Time (HH:MM:SS)",
"max_length": 0,
"max_value": 0,
"read_only": 0,
@@ -96,11 +96,11 @@
},
{
"allow_read_on_all_link_options": 0,
- "description": "Enter Days of the week comma separated.",
+ "description": "",
"fieldname": "sessions_on",
"fieldtype": "Data",
"hidden": 0,
- "label": "Sessions On",
+ "label": "Sessions On Days",
"max_length": 0,
"max_value": 0,
"options": "",
@@ -113,7 +113,7 @@
"fieldname": "end_time",
"fieldtype": "Data",
"hidden": 0,
- "label": "End Time",
+ "label": "End Time (HH:MM:SS)",
"max_length": 0,
"max_value": 0,
"read_only": 0,
diff --git a/community/www/courses/course.html b/community/www/courses/course.html
index 91a874a1..e08396fc 100644
--- a/community/www/courses/course.html
+++ b/community/www/courses/course.html
@@ -98,12 +98,14 @@
{{ course.title }}
{{course.short_introduction}}
+ {% if course.video_link %}
+ {% endif %}
{% if is_mentor %}
Your Batches
@@ -138,18 +140,18 @@
{% endif %}
-
+
{% endfor %}
- Add a new batch
+ Add a new batch
{% else %}
-
+
{% endif %}
@@ -182,7 +184,7 @@
{% endif %}
-
@@ -227,6 +229,7 @@
{% endfor %}
+ {% if not is_mentor %}
Interested to mentor this course? Apply now!
@@ -236,6 +239,7 @@
any more interested to mentor this course, you can Cancel your Application.
+ {% endif %}
{% if course.topics %}
Topics
diff --git a/community/www/courses/course.js b/community/www/courses/course.js
index 3ccfefb3..95f7e27f 100644
--- a/community/www/courses/course.js
+++ b/community/www/courses/course.js
@@ -92,7 +92,7 @@ frappe.ready(() => {
}
batch = decodeURIComponent($(e.currentTarget).attr("data-batch"))
frappe.call({
- "method": "community.lms.doctype.lms_batch_membership.lms_batch_membership.create_member",
+ "method": "community.lms.doctype.lms_batch_membership.lms_batch_membership.create_membership",
"args": {
"batch": batch
},
diff --git a/community/www/courses/course.py b/community/www/courses/course.py
index fa3b4271..d911bbe9 100644
--- a/community/www/courses/course.py
+++ b/community/www/courses/course.py
@@ -3,36 +3,27 @@ from frappe.utils import nowdate, getdate
def get_context(context):
context.no_cache = 1
+
try:
course_id = frappe.form_dict["course"]
except KeyError:
frappe.local.flags.redirect_location = "/courses"
raise frappe.Redirect
+
context.course = get_course(course_id)
context.batches = get_course_batches(context.course.name)
- context.upcoming_batches = get_upcoming_batches(context.course.name, context.batches)
- #context.course_enrolled = has_enrolled(course_id)
- context.discussions, context.memberships = get_discussions(context.batches)
- context.instructor = get_instructor(course_id)
+ context.memberships = get_membership(context.batches)
+ context.upcoming_batches = [] if len(context.memberships) else get_upcoming_batches(context.course.name)
+ context.instructor = get_instructor(context.course.owner)
context.mentors = get_mentors(context.course.name)
- if context.memberships:
- context.member_type = context.memberships[0].member_type
- if context.member_type != "Student":
- context.batches = [membership.batch for membership in context.memberships]
- if context.member_type == "Mentor":
- context.is_mentor = True
- context.mentor_batches = get_mentor_batches(context.memberships)
- context.current_batch = context.memberships[0].batch
- context.author = context.memberships[0].member
- else:
- context.membership_type = None
- context.batches = []
- context.current_batch = None
- context.author = None
+ context.is_mentor = is_mentor(context.course.name)
+
+ if context.is_mentor:
+ context.mentor_batches = get_mentor_batches(context.memberships) # Your Bacthes for mentor
def get_course(slug):
course = frappe.db.get_value("LMS Course", {"slug": slug},
- ["name", "slug", "title", "description", "short_introduction", "video_link"], as_dict=1)
+ ["name", "slug", "title", "description", "short_introduction", "video_link", "owner"], as_dict=1)
course["topics"] = frappe.db.get_all("LMS Topic",
filters={
@@ -43,13 +34,10 @@ def get_course(slug):
)
return course
-def get_upcoming_batches(course, all_batches):
- memberships = get_membership(all_batches)
- if not len(memberships):
- batches = frappe.get_all("LMS Batch", {"course": course, "start_date": [">", nowdate()]}, ["start_date", "start_time", "end_time", "sessions_on", "name"])
- batches = get_batch_mentors(batches)
- return batches
- return []
+def get_upcoming_batches(course):
+ batches = frappe.get_all("LMS Batch", {"course": course, "start_date": [">", nowdate()]}, ["start_date", "start_time", "end_time", "sessions_on", "name"])
+ batches = get_batch_mentors(batches)
+ return batches
def get_batch_mentors(batches):
for batch in batches:
@@ -76,21 +64,18 @@ def get_membership(batches):
memberships.append(membership)
return memberships
-def get_instructor(slug):
- owner = frappe.db.get_value("LMS Course", {"slug":slug}, ["owner"])
+def get_instructor(owner):
instructor = frappe.get_doc("Community Member", {"email": owner})
instructor.course_count = len(frappe.get_all("LMS Course", {"owner": owner}))
return instructor
def get_mentors(course):
course_mentors = []
- mentors = frappe.get_all("LMS Course Mentor Mapping", {"course": course}, ["member"])
+ mentors = frappe.get_all("LMS Course Mentor Mapping", {"course": course}, ["mentor"])
for mentor in mentors:
- member = frappe.get_doc("Community Member", mentor.member)
- member_in_list = list(filter(lambda x: x.name == member.name, course_mentors))
- if not member_in_list:
- member.batch_count = len(frappe.get_all("LMS Batch Membership", {"member": member.name, "member_type": "Mentor"}))
- course_mentors.append(member)
+ member = frappe.get_doc("Community Member", mentor.mentor)
+ member.batch_count = len(frappe.get_all("LMS Batch Membership", {"member": member.name, "member_type": "Mentor"}))
+ course_mentors.append(member)
return course_mentors
def get_course_batches(course):
@@ -112,6 +97,15 @@ def get_mentor_batches(memberships):
mentor_batches = get_batch_mentors(mentor_batches)
return mentor_batches
+def is_mentor(course):
+ try:
+ member = frappe.db.get_value("Community Member", {"email": frappe.session.user}, ["name"])
+ except frappe.DoesNotExistError:
+ return False
+ mapping = frappe.get_all("LMS Course Mentor Mapping", {"course": course, "mentor": member})
+ if len(mapping):
+ return True
+
@frappe.whitelist()
def get_messages(batch):
messages = frappe.get_all("LMS Message", {"batch": batch}, ["*"], order_by="creation desc")
@@ -123,18 +117,6 @@ def get_messages(batch):
message.author_name = "You"
return messages
-@frappe.whitelist()
-def has_enrolled(course):
- return frappe.db.get_value("LMS Course Enrollment", {"course": course, "owner": frappe.session.user})
-
-@frappe.whitelist()
-def enroll(course):
- return frappe.get_doc({
- "doctype": "LMS Course Enrollment",
- "course": course,
- "user": frappe.session.user
- }).save()
-
@frappe.whitelist()
def save_message(message, author, batch):
doc = frappe.get_doc({