diff --git a/erpnext/patches/v8_0/merge_student_batch_and_student_group.py b/erpnext/patches/v8_0/merge_student_batch_and_student_group.py index 3eb8e80340a..7cfdf603030 100644 --- a/erpnext/patches/v8_0/merge_student_batch_and_student_group.py +++ b/erpnext/patches/v8_0/merge_student_batch_and_student_group.py @@ -8,9 +8,9 @@ from frappe.model.mapper import get_mapped_doc def execute(): - # for converting student batch into student group - frappe.reload_doctype("Student Group") + for doctype in ["Student Group", "Student Group Student", "Student Group Instructor", "Student Attendance"]: + frappe.reload_doc("schools", "doctype", doctype) if frappe.db.table_exists("Student Batch"): student_batches = frappe.db.sql('''select name as student_group_name, student_batch_name as batch, @@ -32,7 +32,7 @@ def execute(): else: cond = " " student_list = frappe.db.sql('''select student, student_name {cond} from `tabStudent Batch Student` - where parent=%s'''.format(cond=cond), (doc.name), as_dict=1) + where parent=%s'''.format(cond=cond), (doc.student_group_name), as_dict=1) if student_list: for i, student in enumerate(student_list): @@ -40,7 +40,7 @@ def execute(): doc.extend("students", student_list) instructor_list = frappe.db.sql('''select instructor, instructor_name from `tabStudent Batch Instructor` - where parent=%s''', (doc.name), as_dict=1) + where parent=%s''', (doc.student_group_name), as_dict=1) if instructor_list: doc.extend("instructors", instructor_list) doc.save() @@ -62,8 +62,6 @@ def execute(): frappe.delete_doc("DocType", "Attendance Tool Student", force=1) # change the student batch to student group in the student attendance - frappe.reload_doctype("Student Attendance") - table_columns = frappe.db.get_table_columns("Student Attendance") if "student_batch" in table_columns: rename_field("Student Attendance", "student_batch", "student_group") diff --git a/erpnext/patches/v8_0/update_student_groups_from_student_batches.py b/erpnext/patches/v8_0/update_student_groups_from_student_batches.py new file mode 100644 index 00000000000..ae24fe4a14e --- /dev/null +++ b/erpnext/patches/v8_0/update_student_groups_from_student_batches.py @@ -0,0 +1,38 @@ +# Copyright (c) 2017, Frappe and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.utils.rename_field import * +from frappe.model.mapper import get_mapped_doc + + +def execute(): + if frappe.db.table_exists("Student Batch"): + student_batches = frappe.db.sql('''select name from `tabStudent Batch`''', as_dict=1) + + for student_batch in student_batches: + if frappe.db.exists("Student Group", student_batch.get("name")): + student_group = frappe.get_doc("Student Group", student_batch.get("name")) + + if frappe.db.table_exists("Student Batch Student"): + current_student_list = frappe.db.sql_list('''select student from `tabStudent Group Student` + where parent=%s''', (student_group.name)) + batch_student_list = frappe.db.sql_list('''select student from `tabStudent Batch Student` + where parent=%s''', (student_group.name)) + + student_list = list(set(batch_student_list)-set(current_student_list)) + if student_list: + student_group.extend("students", [{"student":d} for d in student_list]) + + if frappe.db.table_exists("Student Batch Instructor"): + current_instructor_list = frappe.db.sql_list('''select instructor from `tabStudent Group Instructor` + where parent=%s''', (student_group.name)) + batch_instructor_list = frappe.db.sql_list('''select instructor from `tabStudent Batch Instructor` + where parent=%s''', (student_group.name)) + + instructor_list = list(set(batch_instructor_list)-set(current_instructor_list)) + if instructor_list: + student_group.extend("instructors", [{"instructor":d} for d in instructor_list]) + + student_group.save()