Fixes in Student Group
This commit is contained in:
parent
71373a176d
commit
5a8a5b7d06
@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
});
|
@ -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",
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user