Fixes in the patch (#9027)

* fix in the patch

* new patch for student groups

* changes in the merge student batch patch
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 3eb8e80..7cfdf60 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 @@
 
 
 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 @@
 			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 @@
 				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 @@
 		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 0000000..ae24fe4
--- /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()