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 742457f154a..3eb8e80340a 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 @@ -11,43 +11,55 @@ def execute(): # for converting student batch into student group frappe.reload_doctype("Student Group") - student_batches = frappe.db.sql('''select name as student_group_name, student_batch_name as batch, - program, academic_year, academic_term from `tabStudent Batch`''', as_dict=1) - for student_batch in student_batches: - # create student batch name if does not exists !! - if student_batch.get("batch") and not frappe.db.exists("Student Batch Name", student_batch.get("batch")): - frappe.get_doc({ - "doctype": "Student Batch Name", - "batch_name": student_batch.get("batch") - }).insert(ignore_permissions=True) + if frappe.db.table_exists("Student Batch"): + student_batches = frappe.db.sql('''select name as student_group_name, student_batch_name as batch, + program, academic_year, academic_term from `tabStudent Batch`''', as_dict=1) - student_batch.update({"doctype":"Student Group", "group_based_on": "Batch"}) - doc = frappe.get_doc(student_batch) - student_list = frappe.db.sql('''select student, student_name, active from `tabStudent Batch Student` - where parent=%s''', (doc.name), as_dict=1) - for i, student in enumerate(student_list): - student.update({"group_roll_number": i+1}) + for student_batch in student_batches: + # create student batch name if does not exists !! + if student_batch.get("batch") and not frappe.db.exists("Student Batch Name", student_batch.get("batch")): + frappe.get_doc({ + "doctype": "Student Batch Name", + "batch_name": student_batch.get("batch") + }).insert(ignore_permissions=True) - if student_list: - doc.extend("students", student_list) + student_batch.update({"doctype":"Student Group", "group_based_on": "Batch"}) + doc = frappe.get_doc(student_batch) - instructor_list = frappe.db.sql('''select instructor, instructor_name from `tabStudent Batch Instructor` - where parent=%s''', (doc.name), as_dict=1) - if instructor_list: - doc.extend("instructors", instructor_list) - doc.save() + if frappe.db.sql("SHOW COLUMNS FROM `tabStudent Batch Student` LIKE 'active'"): + cond = ", active" + 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) + + if student_list: + for i, student in enumerate(student_list): + student.update({"group_roll_number": i+1}) + 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) + if instructor_list: + doc.extend("instructors", instructor_list) + doc.save() # delete the student batch and child-table - frappe.delete_doc("DocType", "Student Batch", force=1) - frappe.delete_doc("DocType", "Student Batch Student", force=1) - frappe.delete_doc("DocType", "Student Batch Instructor", force=1) + if frappe.db.table_exists("Student Batch"): + frappe.delete_doc("DocType", "Student Batch", force=1) + if frappe.db.table_exists("Student Batch Student"): + frappe.delete_doc("DocType", "Student Batch Student", force=1) + if frappe.db.table_exists("Student Batch Instructor"): + frappe.delete_doc("DocType", "Student Batch Instructor", force=1) # delete the student batch creation tool - frappe.delete_doc("DocType", "Student Batch Creation Tool", force=1) + if frappe.db.table_exists("Student Batch Creation Tool"): + frappe.delete_doc("DocType", "Student Batch Creation Tool", force=1) # delete the student batch creation tool - frappe.delete_doc("DocType", "Attendance Tool Student", force=1) + if frappe.db.table_exists("Attendance Tool Student"): + 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")