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
|
import frappe
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from community.www.courses.utils import get_member_with_email
|
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
|
from community.query import find, find_all
|
||||||
|
|
||||||
class LMSBatch(Document):
|
class LMSBatch(Document):
|
||||||
def validate(self):
|
def validate(self):
|
||||||
|
self.validate_if_mentor()
|
||||||
if not self.code:
|
if not self.code:
|
||||||
self.generate_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):
|
def generate_code(self):
|
||||||
short_code = frappe.db.get_value("LMS Course", self.course, "short_code")
|
short_code = frappe.db.get_value("LMS Course", self.course, "short_code")
|
||||||
course_batches = frappe.get_all("LMS Batch",{"course":self.course})
|
course_batches = frappe.get_all("LMS Batch",{"course":self.course})
|
||||||
self.code = short_code + str(len(course_batches) + 1)
|
self.code = short_code + str(len(course_batches) + 1)
|
||||||
|
|
||||||
def get_mentors(self):
|
def get_mentors(self):
|
||||||
mentors = []
|
|
||||||
memberships = frappe.get_all(
|
memberships = frappe.get_all(
|
||||||
"LMS Batch Membership",
|
"LMS Batch Membership",
|
||||||
{"batch": self.name, "member_type": "Mentor"},
|
{"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")
|
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.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, member=None, member_type="Student", role="Member"):
|
||||||
def create_membership(batch, course=None, member=None, member_type="Student", role="Member"):
|
|
||||||
if not member:
|
if not member:
|
||||||
member = frappe.db.get_value("Community Member", {"email": frappe.session.user}, "name")
|
member = frappe.db.get_value("Community Member", {"email": frappe.session.user}, "name")
|
||||||
frappe.get_doc({
|
frappe.get_doc({
|
||||||
@@ -39,7 +38,4 @@ def create_membership(batch, course=None, member=None, member_type="Student", ro
|
|||||||
"member_type": member_type,
|
"member_type": member_type,
|
||||||
"member": member
|
"member": member
|
||||||
}).save(ignore_permissions=True)
|
}).save(ignore_permissions=True)
|
||||||
if course:
|
|
||||||
course_slug = frappe.db.get_value("LMS Course", {"title": course}, ["name"])
|
|
||||||
return course_slug
|
|
||||||
return "OK"
|
return "OK"
|
||||||
|
|||||||
@@ -1,19 +1,14 @@
|
|||||||
frappe.ready(function () {
|
frappe.ready(function () {
|
||||||
frappe.web_form.after_save = () => {
|
frappe.web_form.after_save = () => {
|
||||||
let data = frappe.web_form.get_values();
|
let data = frappe.web_form.get_values();
|
||||||
frappe.call({
|
let slug = new URLSearchParams(window.location.search).get("slug")
|
||||||
"method": "community.lms.doctype.lms_batch_membership.lms_batch_membership.create_membership",
|
frappe.msgprint({
|
||||||
"args": {
|
message: __("Batch {0} has been successfully created!", [data.title]),
|
||||||
"batch": data.title,
|
clear: true
|
||||||
"member_type": "Mentor",
|
});
|
||||||
"course": data.course
|
setTimeout(function () {
|
||||||
},
|
window.location.href = `courses/${slug}`;
|
||||||
"callback": (data) => {
|
}, 2000);
|
||||||
if (data.message) {
|
|
||||||
window.location.href = `courses/${data.message}`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
frappe.web_form.validate = () => {
|
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 time_format = sysdefaults && sysdefaults.time_format ? sysdefaults.time_format : 'HH:mm:ss';
|
||||||
let data = frappe.web_form.get_values();
|
let data = frappe.web_form.get_values();
|
||||||
|
|
||||||
data.start_time = moment(data.start_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)
|
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)) {
|
if (!frappe.datetime.validate(data.start_time) || !frappe.datetime.validate(data.end_time)) {
|
||||||
frappe.msgprint(__('Invalid Start or End Time.'));
|
frappe.msgprint(__('Invalid Start or End Time.'));
|
||||||
@@ -34,10 +34,6 @@ frappe.ready(function () {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.start_date < date.nowdate()) {
|
|
||||||
frappe.msgprint(__('Start date cannot be a past date.'))
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -111,11 +111,11 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</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 %}
|
{% else %}
|
||||||
<div class="mentor_message">
|
<div class="mentor_message">
|
||||||
<p> You are a mentor for this course. </p>
|
<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>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|||||||
Reference in New Issue
Block a user