From b42c635cdb5834909ed26a75881eb10d322b5429 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Tue, 14 Jan 2025 17:41:46 +0530 Subject: [PATCH] refactor: improved performance and ui batch list --- frontend/src/pages/Batches.vue | 449 +++++++++++++++++---------------- lms/lms/utils.py | 57 ++++- 2 files changed, 286 insertions(+), 220 deletions(-) diff --git a/frontend/src/pages/Batches.vue b/frontend/src/pages/Batches.vue index 935ddbf0..0023dd5f 100644 --- a/frontend/src/pages/Batches.vue +++ b/frontend/src/pages/Batches.vue @@ -1,256 +1,267 @@ diff --git a/lms/lms/utils.py b/lms/lms/utils.py index 8aa3a1ff..0f2eccd2 100644 --- a/lms/lms/utils.py +++ b/lms/lms/utils.py @@ -1211,7 +1211,7 @@ def get_neighbour_lesson(course, chapter, lesson): @frappe.whitelist(allow_guest=True) -def get_batches(): +def get_batches1(): batches = [] filters = {} if frappe.session.user == "Guest": @@ -1902,3 +1902,58 @@ def enroll_in_program_course(program, course): ) enrollment.save() return enrollment + + +@frappe.whitelist(allow_guest=True) +def get_batches(filters=None, start=0, page_length=20): + if not filters: + filters = {} + + if filters.get("enrolled"): + enrolled_batches = frappe.get_all( + "Batch Student", {"student": frappe.session.user}, pluck="parent" + ) + filters.update({"name": ["in", enrolled_batches]}) + del filters["enrolled"] + del filters["published"] + del filters["start_date"] + + batches = frappe.get_all( + "LMS Batch", + filters=filters, + fields=[ + "name", + "title", + "description", + "seat_count", + "paid_batch", + "amount", + "amount_usd", + "currency", + "start_date", + "end_date", + "start_time", + "end_time", + "timezone", + "published", + "category", + ], + order_by="start_date desc", + start=start, + page_length=page_length, + ) + + for batch in batches: + batch.instructors = get_instructors(batch.name) + students_count = frappe.db.count("Batch Student", {"parent": batch.name}) + + if batch.seat_count: + batch.seats_left = batch.seat_count - students_count + + if batch.paid_batch and batch.start_date >= getdate(): + batch.amount, batch.currency = check_multicurrency( + batch.amount, batch.currency, None, batch.amount_usd + ) + batch.price = fmt_money(batch.amount, 0, batch.currency) + + return batches