Merge pull request #80 from fossunited/add-new-batch-form-enhancements
fix: Add new batch form enhancements
This commit is contained in:
@@ -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"},
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -111,11 +111,11 @@
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<a class="btn btn-primary add-batch margin-bottom" href="/add-a-new-batch?new=1&course={{course.title}}">Add a new batch</a>
|
||||
<a class="btn btn-primary add-batch margin-bottom" href="/add-a-new-batch?new=1&course={{course.title}}&slug={{course.name}}">Add a new batch</a>
|
||||
{% else %}
|
||||
<div class="mentor_message">
|
||||
<p> You are a mentor for this course. </p>
|
||||
<a class="btn btn-primary" href="/add-a-new-batch?new=1&course={{course.title}}" >Create your first batch</a>
|
||||
<a class="btn btn-primary" href="/add-a-new-batch?new=1&course={{course.title}}&slug={{course.name}}" >Create your first batch</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
Reference in New Issue
Block a user