From 16ddfb2a209d1750fbd4cb31648b7a7c96bba9d2 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Wed, 30 Mar 2022 22:52:38 +0530 Subject: [PATCH] feat: certification request --- .../course_evaluator/course_evaluator.py | 5 ++ .../lms_certificate_request.json | 37 ++++++++++++--- .../lms_certificate_request.py | 13 ++++- lms/www/courses/course.html | 46 ++++++++++++++++-- lms/www/courses/course.js | 47 ++++++++++++++++++- 5 files changed, 137 insertions(+), 11 deletions(-) diff --git a/lms/lms/doctype/course_evaluator/course_evaluator.py b/lms/lms/doctype/course_evaluator/course_evaluator.py index 20b83470..7f092609 100644 --- a/lms/lms/doctype/course_evaluator/course_evaluator.py +++ b/lms/lms/doctype/course_evaluator/course_evaluator.py @@ -31,3 +31,8 @@ class CourseEvaluator(Document): if overlap: frappe.throw(_("Slot Times are overlapping for some schedules.")) + +@frappe.whitelist() +def get_schedule(course): + evaluator = frappe.db.get_value("LMS Course", course, "evaluator") + return frappe.get_all("Evaluator Schedule", filters={"parent": evaluator}, fields=["day", "start_time", "end_time"]) diff --git a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.json b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.json index e482f9e0..93f9f573 100644 --- a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.json +++ b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.json @@ -9,7 +9,11 @@ "course", "member", "evaluator", - "slot" + "column_break_4", + "date", + "day", + "start_time", + "end_time" ], "fields": [ { @@ -31,17 +35,38 @@ { "fieldname": "evaluator", "fieldtype": "Data", - "label": "Evaluator" + "label": "Evaluator", + "read_only": 1 }, { - "fieldname": "slot", - "fieldtype": "Data", - "label": "Slot" + "fieldname": "date", + "fieldtype": "Date", + "label": "Date" + }, + { + "fieldname": "day", + "fieldtype": "Select", + "label": "Day", + "options": "Sunday\nMonday\nTuesday\nWednesday\nThursday\nFriday\nSaturday" + }, + { + "fieldname": "start_time", + "fieldtype": "Time", + "label": "Start Time" + }, + { + "fieldname": "end_time", + "fieldtype": "Time", + "label": "End Time" + }, + { + "fieldname": "column_break_4", + "fieldtype": "Column Break" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2022-03-29 10:43:50.889723", + "modified": "2022-03-30 10:04:17.530698", "modified_by": "Administrator", "module": "LMS", "name": "LMS Certificate Request", diff --git a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py index e6c629f0..7c4f6d10 100644 --- a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py +++ b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py @@ -1,8 +1,19 @@ # Copyright (c) 2022, Frappe and contributors # For license information, please see license.txt -# import frappe +import frappe from frappe.model.document import Document class LMSCertificateRequest(Document): pass + +@frappe.whitelist() +def create_certificate_request(course, day, start_time, end_time): + evaluator = frappe.db.get_value("LMS Course", course, "evaluator") + frappe.get_doc({ + "doctype": "LMS Certificate Request", + "course": course, + "day": day, + "start_time": start_time, + "end_time": end_time + }).save(ignore_permissions=True) diff --git a/lms/www/courses/course.html b/lms/www/courses/course.html index a8861cce..04bce67e 100644 --- a/lms/www/courses/course.html +++ b/lms/www/courses/course.html @@ -155,7 +155,7 @@ - {% elif is_instructor(course.name) and not course.published and course.status != "Under Review" %} + {% elif is_instructor(course.name) and not course.published and course.status == "Under Review" %}
{{ _("Submit for Review") }} @@ -195,7 +195,7 @@ {{ _("Get Certificate") }} {% elif course.grant_certificate_after == "Evaluation" %} - + {{ _("Apply for Certificate") }} {% elif progress == 100 %} @@ -204,9 +204,49 @@
{% endif %} {% endif %} - + + {% endmacro %} diff --git a/lms/www/courses/course.js b/lms/www/courses/course.js index bf8921b8..71ced380 100644 --- a/lms/www/courses/course.js +++ b/lms/www/courses/course.js @@ -38,6 +38,14 @@ frappe.ready(() => { submit_for_review(e); }); + $("#apply-certificate").click((e) => { + apply_cetificate(e); + }); + + $(".slot").click((e) => { + submit_slot(e); + }); + $(document).scroll(function() { let timer; clearTimeout(timer); @@ -236,4 +244,41 @@ const submit_for_review = (e) => { } } }) -} +}; + +const apply_cetificate = (e) => { + frappe.call({ + method: "lms.lms.doctype.course_evaluator.course_evaluator.get_schedule", + args: { + "course": $(e.currentTarget).data("course") + }, + callback: (data) => { + let options = ""; + data.message.forEach((obj) => { + options += ``; + }); + e.preventDefault(); + $("#slot-modal .slots").html(options); + $("#slot-modal").modal("show"); + } + }) +}; + +const submit_slot = (e) => { + const target = $(e.currentTarget); + frappe.call({ + method: "lms.lms.doctype.lms_certificate_request.lms_certificate_request.create_certificate_request", + args: { + "course": target.data("course"), + "day": target.data("day"), + "start_time": target.data("start"), + "end_time": target.data("end") + }, + callback: (data) => { + + } + }); +};