From 3ade874f9ef6e339c6753340181b28c2b7d130d1 Mon Sep 17 00:00:00 2001 From: Neil Trini Lasrado Date: Mon, 6 Feb 2017 19:35:11 +0530 Subject: [PATCH] Added validations to Student Attendance --- .../student_attendance/student_attendance.py | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/erpnext/schools/doctype/student_attendance/student_attendance.py b/erpnext/schools/doctype/student_attendance/student_attendance.py index e2d01b56bd..8e806e4cd6 100644 --- a/erpnext/schools/doctype/student_attendance/student_attendance.py +++ b/erpnext/schools/doctype/student_attendance/student_attendance.py @@ -6,11 +6,15 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document from frappe import _ +from erpnext.schools.api import get_student_batch_students, get_student_group_students + class StudentAttendance(Document): def validate(self): self.validate_date() self.validate_mandatory() + self.validate_course_schedule() + self.validate_student() self.validate_duplication() def validate_date(self): @@ -21,9 +25,27 @@ class StudentAttendance(Document): if not (self.student_batch or self.course_schedule): frappe.throw(_("""Student Batch or Course Schedule is mandatory""")) + def validate_course_schedule(self): + if self.course_schedule: + self.student_batch = frappe.db.get_value("Course Schedule", self.course_schedule, "student_batch") + + def validate_student(self): + if self.course_schedule: + student_group = frappe.db.get_value("Course Schedule", self.course_schedule, "student_group") + student_group_students = [] + for d in get_student_group_students(student_group): + student_group_students.append(d.student) + 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))) + else: + student_batch_students = [] + for d in get_student_batch_students(self.student_batch): + student_batch_students.append(d.student) + if self.student not in student_batch_students: + frappe.throw(_("""Student {0}: {1} does not belong to Student Batch {2}""".format(self.student, self.student_name, self.student_batch))) + def validate_duplication(self): """Check if the Attendance Record is Unique""" - attendance_records=None if self.course_schedule: attendance_records= frappe.db.sql("""select name from `tabStudent Attendance` where \