fix: scheduled the eval event creation

This commit is contained in:
Jannat Patel
2023-07-24 17:10:03 +05:30
parent 7990675c5c
commit bc8827547e
6 changed files with 91 additions and 52 deletions

View File

@@ -103,11 +103,11 @@ doc_events = {
# Scheduled Tasks # Scheduled Tasks
# --------------- # ---------------
# scheduler_events = { scheduler_events = {
# "daily": [ "hourly": [
# "erpnext.stock.reorder_item.reorder_item" "lms.lms.doctype.lms_certificate_request.lms_certificate_request.schedule_evals"
# ] ]
# } }
fixtures = ["Custom Field", "Function", "Industry"] fixtures = ["Custom Field", "Function", "Industry"]

View File

@@ -14,6 +14,7 @@
"section_break_lifi", "section_break_lifi",
"date", "date",
"day", "day",
"google_meet_link",
"column_break_ddyh", "column_break_ddyh",
"start_time", "start_time",
"end_time" "end_time"
@@ -90,11 +91,17 @@
{ {
"fieldname": "column_break_ddyh", "fieldname": "column_break_ddyh",
"fieldtype": "Column Break" "fieldtype": "Column Break"
},
{
"fieldname": "google_meet_link",
"fieldtype": "Data",
"label": "Google Meet Link",
"read_only": 1
} }
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"links": [], "links": [],
"modified": "2023-07-21 11:13:38.827783", "modified": "2023-07-21 16:00:11.795521",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "LMS", "module": "LMS",
"name": "LMS Certificate Request", "name": "LMS Certificate Request",

View File

@@ -5,7 +5,7 @@ import frappe
from frappe import _ from frappe import _
from frappe.model.document import Document from frappe.model.document import Document
from frappe.model.mapper import get_mapped_doc from frappe.model.mapper import get_mapped_doc
from frappe.utils import format_date, format_time, getdate from frappe.utils import format_date, format_time, getdate, add_to_date, get_datetime
from lms.lms.utils import get_evaluator from lms.lms.utils import get_evaluator
@@ -13,14 +13,10 @@ class LMSCertificateRequest(Document):
def validate(self): def validate(self):
self.validate_if_existing_requests() self.validate_if_existing_requests()
def after_insert(self):
if frappe.db.get_single_value("LMS Settings", "send_calendar_invite_for_evaluations"):
self.create_event()
def validate_if_existing_requests(self): def validate_if_existing_requests(self):
existing_requests = frappe.get_all( existing_requests = frappe.get_all(
"LMS Certificate Request", "LMS Certificate Request",
{"member": self.member, "course": self.course}, {"member": self.member, "course": self.course, "name": ["!=", self.name]},
["date", "start_time", "course"], ["date", "start_time", "course"],
) )
@@ -35,23 +31,45 @@ class LMSCertificateRequest(Document):
) )
) )
def create_event(self):
def schedule_evals():
if frappe.db.get_single_value("LMS Settings", "send_calendar_invite_for_evaluations"):
one_hour_ago = add_to_date(get_datetime(), hours=-1)
evals = frappe.get_all(
"LMS Certificate Request",
{"creation": [">=", one_hour_ago], "google_meet_link": ["is", "not set"]},
["name", "member", "member_name", "evaluator", "date", "start_time", "end_time"],
)
for eval in evals:
setup_calendar_event(eval)
def setup_calendar_event(eval):
calendar = frappe.db.get_value( calendar = frappe.db.get_value(
"Google Calendar", {"user": self.evaluator, "enable": 1}, "name" "Google Calendar", {"user": eval.evaluator, "enable": 1}, "name"
) )
if calendar: if calendar:
event = create_event(eval)
add_participants(eval, event)
update_meeting_details(eval, event, calendar)
def create_event(eval):
event = frappe.get_doc( event = frappe.get_doc(
{ {
"doctype": "Event", "doctype": "Event",
"subject": f"Evaluation of {self.member_name}", "subject": f"Evaluation of {eval.member_name}",
"starts_on": f"{self.date} {self.start_time}", "starts_on": f"{eval.date} {eval.start_time}",
"ends_on": f"{self.date} {self.end_time}", "ends_on": f"{eval.date} {eval.end_time}",
} }
) )
event.save() event.save()
return event
participants = [self.member, self.evaluator]
def add_participants(eval, event):
participants = [eval.member, eval.evaluator]
for participant in participants: for participant in participants:
contact_name = frappe.db.get_value("Contact", {"email_id": participant}, "name") contact_name = frappe.db.get_value("Contact", {"email_id": participant}, "name")
frappe.get_doc( frappe.get_doc(
@@ -66,6 +84,8 @@ class LMSCertificateRequest(Document):
} }
).save() ).save()
def update_meeting_details(eval, event, calendar):
event.reload() event.reload()
event.update( event.update(
{ {
@@ -76,6 +96,10 @@ class LMSCertificateRequest(Document):
) )
event.save() event.save()
event.reload()
frappe.db.set_value(
"LMS Certificate Request", eval.name, "google_meet_link", event.google_meet_link
)
@frappe.whitelist() @frappe.whitelist()

View File

@@ -71,9 +71,17 @@
<article class="cards-parent"> <article class="cards-parent">
{% for eval in upcoming_evals %} {% for eval in upcoming_evals %}
<div class="common-card-style column-card"> <div class="common-card-style column-card">
<div class="flex align-center justify-between">
<div class="bold-heading"> <div class="bold-heading">
{{ eval.course_title }} {{ eval.course_title }}
</div> </div>
{% if eval.google_meet_link %}
<a class="btn btn-default btn-sm pull-right" href="{{ eval.google_meet_link }}">
{{ _("Join") }}
</a>
{% endif %}
</div>
<div class="vertically-center"> <div class="vertically-center">
<svg class="icon icon-sm mr-1"> <svg class="icon icon-sm mr-1">
<use href="#icon-calendar"></use> <use href="#icon-calendar"></use>

View File

@@ -107,6 +107,7 @@ const submit_evaluation_form = (values) => {
frappe.throw(__("Please select a slot")); frappe.throw(__("Please select a slot"));
} }
this.eval_form.hide();
frappe.call({ frappe.call({
method: "lms.lms.doctype.lms_certificate_request.lms_certificate_request.create_certificate_request", method: "lms.lms.doctype.lms_certificate_request.lms_certificate_request.create_certificate_request",
args: { args: {
@@ -122,7 +123,6 @@ const submit_evaluation_form = (values) => {
message: __("Evaluation scheduled successfully"), message: __("Evaluation scheduled successfully"),
indicator: "green", indicator: "green",
}); });
this.eval_form.hide();
setTimeout(() => { setTimeout(() => {
window.location.reload(); window.location.reload();
}, 1000); }, 1000);

View File

@@ -42,7 +42,7 @@ def get_context(context):
"course": ["in", context.courses], "course": ["in", context.courses],
"date": [">=", frappe.utils.nowdate()], "date": [">=", frappe.utils.nowdate()],
}, },
["date", "start_time", "course", "evaluator"], ["date", "start_time", "course", "evaluator", "google_meet_link"],
order_by="date", order_by="date",
) )