Merge pull request #9466 from manassolanki/validation
changes in student settings for validating the students in the student groups
diff --git a/erpnext/schools/doctype/school_settings/school_settings.json b/erpnext/schools/doctype/school_settings/school_settings.json
index 8607a76..8d4d4f5 100644
--- a/erpnext/schools/doctype/school_settings/school_settings.json
+++ b/erpnext/schools/doctype/school_settings/school_settings.json
@@ -139,8 +139,8 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
- "default": "1",
- "fieldname": "validation_from_pe",
+ "description": "For Batch based Student Group, the Student Batch will be validated for every Student from the Program Enrollment.",
+ "fieldname": "validate_batch",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
@@ -149,7 +149,38 @@
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
- "label": "Validate the Student Group from Program Enrollment",
+ "label": "Validate Batch for Students in Student Group",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "description": "For Course based Student Group, the Course will be validated for every Student from the enrolled Courses in Program Enrollment.",
+ "fieldname": "validate_course",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Validate Enrolled Course for Students in Student Group",
"length": 0,
"no_copy": 0,
"permlevel": 0,
@@ -175,7 +206,7 @@
"issingle": 1,
"istable": 0,
"max_attachments": 0,
- "modified": "2017-04-27 15:37:00.159072",
+ "modified": "2017-06-26 14:07:36.542314",
"modified_by": "Administrator",
"module": "Schools",
"name": "School Settings",
diff --git a/erpnext/schools/doctype/school_settings/school_settings.py b/erpnext/schools/doctype/school_settings/school_settings.py
index 6d8efb4..999014a 100644
--- a/erpnext/schools/doctype/school_settings/school_settings.py
+++ b/erpnext/schools/doctype/school_settings/school_settings.py
@@ -11,7 +11,8 @@
# "key in defaults": "key in Global Defaults"
"academic_year": "current_academic_year",
"academic_term": "current_academic_term",
- "student_validation_setting": "validation_from_pe",
+ "validate_batch": "validate_batch",
+ "validate_course": "validate_course"
}
class SchoolSettings(Document):
diff --git a/erpnext/schools/doctype/student_attendance/student_attendance.py b/erpnext/schools/doctype/student_attendance/student_attendance.py
index 2688123..6960296 100644
--- a/erpnext/schools/doctype/student_attendance/student_attendance.py
+++ b/erpnext/schools/doctype/student_attendance/student_attendance.py
@@ -35,9 +35,7 @@
student_group = frappe.db.get_value("Course Schedule", self.course_schedule, "student_group")
else:
student_group = self.student_group
- student_group_students = []
- for d in get_student_group_students(student_group):
- student_group_students.append(d.student)
+ student_group_students = [d.student for d in get_student_group_students(student_group)]
if student_group and self.student not in student_group_students:
frappe.throw(_('''Student {0}: {1} does not belong to Student Group {2}'''.format(self.student, self.student_name, student_group)))
diff --git a/erpnext/schools/doctype/student_group/student_group.py b/erpnext/schools/doctype/student_group/student_group.py
index 26bd311..55f1b66 100644
--- a/erpnext/schools/doctype/student_group/student_group.py
+++ b/erpnext/schools/doctype/student_group/student_group.py
@@ -12,8 +12,7 @@
def validate(self):
self.validate_mandatory_fields()
self.validate_strength()
- if frappe.defaults.get_defaults().student_validation_setting:
- self.validate_students()
+ self.validate_students()
self.validate_and_set_child_table_fields()
validate_duplicate_student(self.students)
@@ -31,12 +30,14 @@
def validate_students(self):
program_enrollment = get_program_enrollment(self.academic_year, self.academic_term, self.program, self.batch, self.course)
- students = [d.student for d in program_enrollment] if program_enrollment else None
+ students = [d.student for d in program_enrollment] if program_enrollment else []
for d in self.students:
- if self.group_based_on != "Activity" and students and d.student not in students and d.active == 1:
- frappe.throw(_("{0} - {1} is not enrolled in the given {2}".format(d.group_roll_number, d.student_name, self.group_based_on)))
if not frappe.db.get_value("Student", d.student, "enabled") and d.active:
frappe.throw(_("{0} - {1} is inactive student".format(d.group_roll_number, d.student_name)))
+ if self.group_based_on == "Batch" and d.student not in students and frappe.defaults.get_defaults().validate_batch:
+ frappe.throw(_("{0} - {1} is not enrolled in the Batch {2}".format(d.group_roll_number, d.student_name, self.batch)))
+ if self.group_based_on == "Course" and d.student not in students and frappe.defaults.get_defaults().validate_course:
+ frappe.throw(_("{0} - {1} is not enrolled in the Course {2}".format(d.group_roll_number, d.student_name, self.course)))
def validate_and_set_child_table_fields(self):
roll_numbers = [d.group_roll_number for d in self.students if d.group_roll_number]