From d652221071ac9c05998ba1d2d0736a56b9a841a9 Mon Sep 17 00:00:00 2001 From: Manas Solanki Date: Tue, 27 Jun 2017 12:45:46 +0530 Subject: [PATCH 1/2] fetch queries for the students in the student group --- .../doctype/student_group/student_group.js | 16 ++++++++++++++ .../doctype/student_group/student_group.py | 22 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/erpnext/schools/doctype/student_group/student_group.js b/erpnext/schools/doctype/student_group/student_group.js index 83fe0945cc..80355a8b94 100644 --- a/erpnext/schools/doctype/student_group/student_group.js +++ b/erpnext/schools/doctype/student_group/student_group.js @@ -9,6 +9,22 @@ frappe.ui.form.on("Student Group", { } }; }); + if (!frm.__islocal) { + frm.set_query("student", "students", function() { + return{ + query: "erpnext.schools.doctype.student_group.student_group.fetch_students", + filters: { + 'academic_year': frm.doc.academic_year, + 'group_based_on': frm.doc.group_based_on, + 'academic_term': frm.doc.academic_term, + 'program': frm.doc.program, + 'batch': frm.doc.batch, + 'course': frm.doc.course, + 'student_group': frm.doc.name + } + } + }); + } }, refresh: function(frm) { diff --git a/erpnext/schools/doctype/student_group/student_group.py b/erpnext/schools/doctype/student_group/student_group.py index 9cdf9c7f01..9822d90b6e 100644 --- a/erpnext/schools/doctype/student_group/student_group.py +++ b/erpnext/schools/doctype/student_group/student_group.py @@ -95,3 +95,25 @@ def get_program_enrollment(academic_year, academic_term=None, program=None, batc '''.format(condition1=condition1, condition2=condition2), ({"academic_year": academic_year, "academic_term":academic_term, "program": program, "batch": batch, "course": course}), as_dict=1) + +@frappe.whitelist() +def fetch_students(doctype, txt, searchfield, start, page_len, filters): + if filters.get("group_based_on") != "Activity": + enrolled_students = get_program_enrollment(filters.get('academic_year'), filters.get('academic_term'), + filters.get('program'), filters.get('batch')) + student_group_student = frappe.db.sql_list('''select student from `tabStudent Group Student` where parent=%s''', + (filters.get('student_group'))) + students = ([d.student for d in enrolled_students if d.student not in student_group_student] + if enrolled_students else [""]) or [""] + return frappe.db.sql("""select name, title from tabStudent + where name in ({0}) and `{1}` LIKE %s + order by idx desc, name + limit %s, %s""".format(", ".join(['%s']*len(students)), searchfield), + tuple(students + ["%%%s%%" % txt, start, page_len])) + else: + return frappe.db.sql("""select name, title from tabStudent + where `{}` LIKE %s + order by idx desc, name + limit %s, %s""".format(searchfield), + tuple(["%%%s%%" % txt, start, page_len])) + From 5c7545da0c3edfbff0c679e2a75d33d36971f601 Mon Sep 17 00:00:00 2001 From: Makarand Bauskar Date: Thu, 29 Jun 2017 09:07:59 +0530 Subject: [PATCH 2/2] [minor] passed index for string format --- erpnext/schools/doctype/student_group/student_group.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/schools/doctype/student_group/student_group.py b/erpnext/schools/doctype/student_group/student_group.py index 9822d90b6e..26bd311382 100644 --- a/erpnext/schools/doctype/student_group/student_group.py +++ b/erpnext/schools/doctype/student_group/student_group.py @@ -112,7 +112,7 @@ def fetch_students(doctype, txt, searchfield, start, page_len, filters): tuple(students + ["%%%s%%" % txt, start, page_len])) else: return frappe.db.sql("""select name, title from tabStudent - where `{}` LIKE %s + where `{0}` LIKE %s order by idx desc, name limit %s, %s""".format(searchfield), tuple(["%%%s%%" % txt, start, page_len]))