diff --git a/community/lms/doctype/lms_batch/lms_batch.py b/community/lms/doctype/lms_batch/lms_batch.py index 9e4d5fe3..16d1ec72 100644 --- a/community/lms/doctype/lms_batch/lms_batch.py +++ b/community/lms/doctype/lms_batch/lms_batch.py @@ -6,20 +6,30 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document from community.www.courses.utils import get_member_with_email +from frappe import _ +from community.lms.doctype.lms_batch_membership.lms_batch_membership import create_membership from community.query import find, find_all class LMSBatch(Document): def validate(self): + self.validate_if_mentor() if not self.code: self.generate_code() + def validate_if_mentor(self): + course = frappe.get_doc("LMS Course", self.course) + if not course.is_mentor(frappe.session.user): + 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") + def generate_code(self): short_code = frappe.db.get_value("LMS Course", self.course, "short_code") course_batches = frappe.get_all("LMS Batch",{"course":self.course}) self.code = short_code + str(len(course_batches) + 1) def get_mentors(self): - mentors = [] memberships = frappe.get_all( "LMS Batch Membership", {"batch": self.name, "member_type": "Mentor"}, 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 5c55bab6..0d6db70d 100644 --- a/community/lms/doctype/lms_batch_membership/lms_batch_membership.py +++ b/community/lms/doctype/lms_batch_membership/lms_batch_membership.py @@ -28,8 +28,7 @@ class LMSBatchMembership(Document): member_name = frappe.db.get_value("Community Member", self.member, "full_name") 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, course=None, 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({ @@ -39,7 +38,4 @@ def create_membership(batch, course=None, member=None, member_type="Student", ro "member_type": member_type, "member": member }).save(ignore_permissions=True) - if course: - course_slug = frappe.db.get_value("LMS Course", {"title": course}, ["name"]) - return course_slug return "OK" 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 8e45c529..047429b8 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,19 +1,14 @@ frappe.ready(function () { 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", - "course": data.course - }, - "callback": (data) => { - if (data.message) { - window.location.href = `courses/${data.message}` - } - } - }) + let slug = new URLSearchParams(window.location.search).get("slug") + frappe.msgprint({ + message: __("Batch {0} has been successfully created!", [data.title]), + clear: true + }); + setTimeout(function () { + window.location.href = `courses/${slug}`; + }, 2000); } frappe.web_form.validate = () => { @@ -21,8 +16,13 @@ frappe.ready(function () { let time_format = sysdefaults && sysdefaults.time_format ? sysdefaults.time_format : 'HH:mm:ss'; let data = frappe.web_form.get_values(); - data.start_time = moment(data.start_time,time_format).format(time_format) - data.end_time = moment(data.end_time,time_format).format(time_format) + data.start_time = moment(data.start_time, time_format).format(time_format) + data.end_time = moment(data.end_time, time_format).format(time_format) + + if (data.start_date < frappe.datetime.nowdate()) { + frappe.msgprint(__('Start date cannot be a past date.')) + return false; + } if (!frappe.datetime.validate(data.start_time) || !frappe.datetime.validate(data.end_time)) { frappe.msgprint(__('Invalid Start or End Time.')); @@ -34,10 +34,6 @@ frappe.ready(function () { return false; } - if (data.start_date < date.nowdate()) { - frappe.msgprint(__('Start date cannot be a past date.')) - return false; - } return true; }; }) diff --git a/community/www/courses/course.html b/community/www/courses/course.html index b0ecb270..ff51a3fc 100644 --- a/community/www/courses/course.html +++ b/community/www/courses/course.html @@ -111,11 +111,11 @@ {% endfor %} - Add a new batch + Add a new batch {% else %}
{% endif %} {% endmacro %}