From 0d9926910954a80e1217526937279301efcc85d4 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Wed, 20 Sep 2023 12:09:02 +0530 Subject: [PATCH] feat: live class checkbox --- lms/lms/doctype/lms_batch/lms_batch.js | 7 +--- lms/lms/doctype/lms_batch/lms_batch.json | 19 ++++++++++- lms/lms/doctype/lms_batch/lms_batch.py | 34 +++++++++++++++---- .../lms_live_class/lms_live_class.json | 14 ++++---- 4 files changed, 54 insertions(+), 20 deletions(-) diff --git a/lms/lms/doctype/lms_batch/lms_batch.js b/lms/lms/doctype/lms_batch/lms_batch.js index 5669fe3f..b42ec2a4 100644 --- a/lms/lms/doctype/lms_batch/lms_batch.js +++ b/lms/lms/doctype/lms_batch/lms_batch.js @@ -12,12 +12,7 @@ frappe.ui.form.on("LMS Batch", { }); frm.set_query("reference_doctype", "timetable", function () { - let doctypes = [ - "Course Lesson", - "LMS Quiz", - "LMS Assignment", - "LMS Live Class", - ]; + let doctypes = ["Course Lesson", "LMS Quiz", "LMS Assignment"]; return { filters: { name: ["in", doctypes], diff --git a/lms/lms/doctype/lms_batch/lms_batch.json b/lms/lms/doctype/lms_batch/lms_batch.json index 038239e7..2f916303 100644 --- a/lms/lms/doctype/lms_batch/lms_batch.json +++ b/lms/lms/doctype/lms_batch/lms_batch.json @@ -36,6 +36,9 @@ "assessment", "schedule_tab", "timetable_template", + "column_break_anya", + "show_live_class", + "section_break_ontp", "timetable" ], "fields": [ @@ -200,11 +203,25 @@ "fieldtype": "Link", "label": "Timetable Template", "options": "LMS Timetable Template" + }, + { + "fieldname": "column_break_anya", + "fieldtype": "Column Break" + }, + { + "default": "0", + "fieldname": "show_live_class", + "fieldtype": "Check", + "label": "Show Live Class" + }, + { + "fieldname": "section_break_ontp", + "fieldtype": "Section Break" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-09-18 17:36:03.621651", + "modified": "2023-09-20 11:25:10.683688", "modified_by": "Administrator", "module": "LMS", "name": "LMS Batch", diff --git a/lms/lms/doctype/lms_batch/lms_batch.py b/lms/lms/doctype/lms_batch/lms_batch.py index 10664dd6..6cfbb6dc 100644 --- a/lms/lms/doctype/lms_batch/lms_batch.py +++ b/lms/lms/doctype/lms_batch/lms_batch.py @@ -6,6 +6,7 @@ import requests import base64 import json from frappe import _ +from datetime import timedelta from frappe.model.document import Document from frappe.utils import cint, format_date, format_datetime from lms.lms.utils import get_lessons, get_lesson_index, get_lesson_url @@ -274,6 +275,32 @@ def get_batch_timetable(batch): order_by="date", ) + show_live_class = frappe.db.get_value("LMS Batch", batch, "show_live_class") + if show_live_class: + live_classes = get_live_classes(batch) + timetable.extend(live_classes) + + timetable = get_timetable_details(timetable) + return timetable + + +def get_live_classes(batch): + live_classes = frappe.get_all( + "LMS Live Class", + {"batch_name": batch}, + ["name", "title", "date", "time as start_time", "duration", "join_url as url"], + order_by="date", + ) + for class_ in live_classes: + class_.end_time = class_.start_time + timedelta(minutes=class_.duration) + class_.reference_doctype = "LMS Live Class" + class_.reference_docname = class_.name + class_.icon = "icon-call" + + return live_classes + + +def get_timetable_details(timetable): for entry in timetable: entry.title = frappe.db.get_value( entry.reference_doctype, entry.reference_docname, "title" @@ -298,10 +325,5 @@ def get_batch_timetable(batch): details = get_assignment_details(assessment, frappe.session.user) entry.update(details) - elif entry.reference_doctype == "LMS Live Class": - entry.icon = "icon-call" - entry.url = frappe.db.get_value( - entry.reference_doctype, entry.reference_docname, "join_url" - ) - + timetable = sorted(timetable, key=lambda k: k["date"]) return timetable diff --git a/lms/lms/doctype/lms_live_class/lms_live_class.json b/lms/lms/doctype/lms_live_class/lms_live_class.json index af87c823..74e21479 100644 --- a/lms/lms/doctype/lms_live_class/lms_live_class.json +++ b/lms/lms/doctype/lms_live_class/lms_live_class.json @@ -10,16 +10,16 @@ "title", "host", "batch_name", - "password", - "auto_recording", "column_break_astv", - "description", - "section_break_glxh", "date", - "timezone", - "column_break_spvt", "time", "duration", + "section_break_glxh", + "description", + "column_break_spvt", + "timezone", + "password", + "auto_recording", "section_break_yrpq", "start_url", "column_break_yokr", @@ -126,7 +126,7 @@ ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-09-14 15:02:44.081474", + "modified": "2023-09-20 11:29:20.899897", "modified_by": "Administrator", "module": "LMS", "name": "LMS Live Class",