Fixes in Student Group

This commit is contained in:
Manas Solanki 2017-04-28 09:42:45 +05:30 committed by Nabin Hait
parent 71373a176d
commit 5a8a5b7d06
3 changed files with 40 additions and 75 deletions

View File

@ -1,4 +1,4 @@
cur_frm.add_fetch("student", "title", "student_name");
cur_frm.add_fetch("student", "title", "student_name");
frappe.ui.form.on("Student Group", {
onload: function(frm) {
@ -39,41 +39,6 @@ frappe.ui.form.on("Student Group", {
if (frm.doc.group_based_on == "Batch") {
frm.doc.course = null;
}
else if (frm.doc.group_based_on == "Course") {
frm.doc.program = null;
frm.doc.batch = null;
}
else if (frm.doc.group_based_on == "Activity") {
frm.doc.program =null;
frm.doc.batch =null;
frm.doc.CourseQ =null;
}
frm.trigger("set_name");
},
set_name: function(frm) {
var name;
if (frm.doc.group_based_on == "Course") {
name = "Course-" + frm.doc.course + "-" + (frm.doc.academic_term?frm.doc.academic_term:frm.doc.academic_year);
} else if (frm.doc.group_based_on == "Batch") {
name = "Batch-" + frm.doc.program + "-" + frm.doc.batch + "-"
+ (frm.doc.academic_term?frm.doc.academic_term:frm.doc.academic_year);
} else if (frm.doc.group_based_on == "Activity") {
name = "Activity" + "-" + (frm.doc.academic_term?frm.doc.academic_term:frm.doc.academic_year);
}
frm.set_value("student_group_name", name);
},
program:function(frm) {
frm.trigger("set_name");
},
batch:function(frm) {
frm.trigger("set_name");
},
course:function(frm) {
frm.trigger("set_name");
},
get_students: function(frm) {
@ -90,6 +55,7 @@ frappe.ui.form.on("Student Group", {
method: "erpnext.schools.doctype.student_group.student_group.get_students",
args: {
"academic_year": frm.doc.academic_year,
"academic_term": frm.doc.academic_term,
"group_based_on": frm.doc.group_based_on,
"program": frm.doc.program,
"batch" : frm.doc.batch,
@ -119,5 +85,4 @@ frappe.ui.form.on("Student Group", {
frappe.msgprint(__("Select students manually for the Activity based Group"));
}
}
});

View File

@ -72,7 +72,7 @@
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 1,
"set_only_once": 0,
"unique": 0
},
{
@ -81,7 +81,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"depends_on": "eval: doc.batch || doc.course || doc.group_based_on == \"Activity\"",
"depends_on": "",
"fieldname": "student_group_name",
"fieldtype": "Data",
"hidden": 0,
@ -101,7 +101,7 @@
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
@ -194,7 +194,7 @@
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 1,
"set_only_once": 0,
"unique": 0
},
{
@ -203,7 +203,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.group_based_on == 'Batch' || doc.group_based_on == 'Course' ",
"depends_on": "",
"fieldname": "program",
"fieldtype": "Link",
"hidden": 0,
@ -226,7 +226,7 @@
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 1,
"set_only_once": 0,
"unique": 0
},
{
@ -235,7 +235,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.group_based_on == 'Batch' || doc.group_based_on == 'Course' ",
"depends_on": "",
"fieldname": "batch",
"fieldtype": "Link",
"hidden": 0,
@ -258,7 +258,7 @@
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 1,
"set_only_once": 0,
"unique": 0
},
{
@ -290,7 +290,7 @@
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 1,
"set_only_once": 0,
"unique": 0
},
{
@ -459,7 +459,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
"modified": "2017-04-25 18:26:27.414487",
"modified": "2017-04-28 11:46:51.946103",
"modified_by": "Administrator",
"module": "Schools",
"name": "Student Group",

View File

@ -13,34 +13,34 @@ class StudentGroup(Document):
def validate(self):
self.validate_mandatory_fields()
self.validate_strength()
if frappe.defaults.get_defaults().student_validation_setting
if frappe.defaults.get_defaults().student_validation_setting:
self.validate_students()
validate_duplicate_student(self.students)
def validate_mandatory_fields(self):
if self.group_based_on == "Course" and not self.course:
frappe.throw(_("Please select Course"))
elif self.group_based_on == "Batch" and (not self.program or not self.batch):
frappe.throw(_("Please select Program and Batch"))
if self.group_based_on == "Course" and (not self.program and self.batch):
frappe.throw(_("Please select Program"))
if self.group_based_on == "Batch" and not self.program:
frappe.throw(_("Please select Program"))
def validate_strength(self):
if self.max_strength and len(self.students) > self.max_strength:
frappe.throw(_("""Cannot enroll more than {0} students for this student group.""").format(self.max_strength))
def validate_students(self):
program_enrollment = get_program_enrollment(self.academic_year, self.group_based_on, self.program, self.batch, self.course)
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
for d in self.students:
if self.group_based_on != "Activity" and d.student not in students:
frappe.throw(_("{0} - {1} is not enrolled in the given {2}".format(d.student, d.student_name, self.group_based_on)))
if self.group_based_on != "Activity" 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:
d.active = 0
frappe.throw(_("{0} - {1} is inactive student".format(d.student, d.student_name)))
frappe.throw(_("{0} - {1} is inactive student".format(d.group_roll_number, d.student_name)))
@frappe.whitelist()
def get_students(academic_year, group_based_on, program=None, batch=None, course=None):
enrolled_students = get_program_enrollment(academic_year, group_based_on, program, batch, course)
print enrolled_students
def get_students(academic_year, group_based_on, academic_term=None, program=None, batch=None, course=None):
enrolled_students = get_program_enrollment(academic_year, academic_term, program, batch, course)
if enrolled_students:
student_list = []
@ -51,32 +51,32 @@ def get_students(academic_year, group_based_on, program=None, batch=None, course
s.update({"active": 0})
student_list.append(s)
return student_list
else:
frappe.throw(_("No students found"))
def get_program_enrollment(academic_year, group_based_on, program=None, batch=None, course=None):
def get_program_enrollment(academic_year, academic_term=None, program=None, batch=None, course=None):
condition_course = " and pe.name = pec.parent and pec.course = %(course)s"
condition1_course = ", `tabProgram Enrollment Course` pec"
condition_batch = " and pe.program = %(program)s and pe.student_batch_name = %(batch)s"
if group_based_on == "Batch":
condition1 = ""
condition2 = condition_batch
elif group_based_on == "Course" and not (program and batch):
condition1 = condition1_course
condition2 = condition_course
elif group_based_on == "Course" and program and batch:
condition1 = condition1_course
condition2 = condition_course + condition_batch
condition1 = " "
condition2 = " "
if academic_term:
condition1 += " and pe.academic_term = %(academic_term)s"
if program:
condition1 += " and pe.program = %(program)s"
if batch:
condition1 += " and pe.student_batch_name = %(batch)s"
if course:
condition1 += " and pe.name = pec.parent and pec.course = %(course)s"
condition2 = ", `tabProgram Enrollment Course` pec"
return frappe.db.sql('''
select
pe.student, pe.student_name
from
`tabProgram Enrollment` pe {condition1}
`tabProgram Enrollment` pe {condition2}
where
pe.academic_year = %(academic_year)s {condition2}
pe.academic_year = %(academic_year)s {condition1}
order by
pe.student_name asc
'''.format(condition1=condition1, condition2=condition2),
({"academic_year": academic_year, "program": program, "batch": batch, "course": course}), as_dict=1)
({"academic_year": academic_year, "academic_term":academic_term, "program": program, "batch": batch, "course": course}), as_dict=1)