From 9981baa13b2f85ed21a2dae3d530e914a287843c Mon Sep 17 00:00:00 2001 From: pateljannat Date: Fri, 7 May 2021 12:04:11 +0530 Subject: [PATCH] fix: add new batch form enhancements --- community/lms/doctype/lms_batch/lms_batch.py | 11 ++++++ .../lms_batch_membership.py | 5 +-- .../add_a_new_batch/add_a_new_batch.js | 34 ++++++++----------- community/www/courses/course.html | 4 +-- 4 files changed, 29 insertions(+), 25 deletions(-) diff --git a/community/lms/doctype/lms_batch/lms_batch.py b/community/lms/doctype/lms_batch/lms_batch.py index 7fc547f3..752e7737 100644 --- a/community/lms/doctype/lms_batch/lms_batch.py +++ b/community/lms/doctype/lms_batch/lms_batch.py @@ -6,12 +6,23 @@ 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 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.title, 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}) 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 a9f963a3..8cc24411 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_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 +39,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}, ["slug"]) - 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 3c08fc97..cc403210 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 %}

You are a mentor for this course.

- Create your first batch + Create your first batch
{% endif %} {% endmacro %}