Fix the demo for the schools (#8879)
* Fix the demo for the schools
* Fix for the demo
https://github.com/frappe/erpnext/issues/6347
diff --git a/erpnext/demo/user/schools.py b/erpnext/demo/user/schools.py
index 6388f9a..422c31a 100644
--- a/erpnext/demo/user/schools.py
+++ b/erpnext/demo/user/schools.py
@@ -8,30 +8,22 @@
from frappe.utils import cstr
from frappe.utils.make_random import get_random
from datetime import timedelta
-from erpnext.schools.api import get_student_group_students, make_attendance_records, enroll_student, get_fee_schedule, collect_fees
+from erpnext.schools.api import get_student_group_students, make_attendance_records, enroll_student, \
+ get_fee_schedule, collect_fees, get_course
+from erpnext.schools.doctype.program_enrollment.program_enrollment import get_program_courses
+from erpnext.schools.doctype.student_group.student_group import get_students
def work():
frappe.set_user(frappe.db.get_global('demo_schools_user'))
for d in xrange(20):
approve_random_student_applicant()
enroll_random_student(frappe.flags.current_date)
- if frappe.flags.current_date.weekday()== 0:
- make_course_schedule(frappe.flags.current_date, frappe.utils.add_days(frappe.flags.current_date, 5))
+ # if frappe.flags.current_date.weekday()== 0:
+ # make_course_schedule(frappe.flags.current_date, frappe.utils.add_days(frappe.flags.current_date, 5))
mark_student_attendance(frappe.flags.current_date)
+ # make_assessment_plan()
make_fees()
-def mark_student_attendance(current_date):
- status = ["Present", "Absent"]
- for d in frappe.db.get_list("Course Schedule", filters={"schedule_date": current_date}, fields=("name", "student_group")):
- students = get_student_group_students(d.student_group)
- for stud in students:
- make_attendance_records(stud.student, stud.student_name, d.name, status[weighted_choice([9,4])])
-
-def make_fees():
- for d in range(1,10):
- random_fee = get_random("Fees", {"paid_amount": 0})
- collect_fees(random_fee, frappe.db.get_value("Fees", random_fee, "outstanding_amount"))
-
def approve_random_student_applicant():
random_student = get_random("Student Applicant", {"application_status": "Applied"})
if random_student:
@@ -39,31 +31,59 @@
frappe.db.set_value("Student Applicant", random_student, "application_status", status[weighted_choice([9,3])])
def enroll_random_student(current_date):
+ batch = ["Section-A", "Section-B"]
random_student = get_random("Student Applicant", {"application_status": "Approved"})
if random_student:
enrollment = enroll_student(random_student)
enrollment.academic_year = get_random("Academic Year")
enrollment.enrollment_date = current_date
+ enrollment.student_batch_name = batch[weighted_choice([9,3])]
fee_schedule = get_fee_schedule(enrollment.program)
for fee in fee_schedule:
enrollment.append("fees", fee)
+ enrolled_courses = get_course(enrollment.program)
+ for course in enrolled_courses:
+ enrollment.append("courses", course)
enrollment.submit()
frappe.db.commit()
- assign_student_group(enrollment.student, enrollment.program)
+ assign_student_group(enrollment.student, enrollment.student_name, enrollment.program,
+ enrolled_courses, enrollment.student_batch_name)
-def assign_student_group(student, program):
- courses = []
- for d in frappe.get_list("Program Course", fields=("course"), filters={"parent": program }):
- courses.append(d.course)
+def assign_student_group(student, student_name, program, courses, batch):
+ course_list = [d["course"] for d in courses]
+ for d in frappe.get_list("Student Group", fields=("name"), filters={"program": program, "course":("in", course_list)}):
+ student_group = frappe.get_doc("Student Group", d.name)
+ student_group.append("students", {"student": student, "student_name": student_name,
+ "group_roll_number":len(student_group.students)+1, "active":1})
+ student_group.save()
+ student_batch = frappe.get_list("Student Group", fields=("name"), filters={"program": program, "group_based_on":"Batch", "batch":batch})[0]
+ student_batch_doc = frappe.get_doc("Student Group", student_batch.name)
+ student_batch_doc.append("students", {"student": student, "student_name": student_name,
+ "group_roll_number":len(student_batch_doc.students)+1, "active":1})
+ student_batch_doc.save()
+ frappe.db.commit()
- for d in xrange(3):
- course = random.choice(courses)
- random_sg = get_random("Student Group", {"course": course})
- if random_sg:
- student_group = frappe.get_doc("Student Group", random_sg)
- student_group.append("students", {"student": student})
- student_group.save()
- courses.remove(course)
+def mark_student_attendance(current_date):
+ status = ["Present", "Absent"]
+ for d in frappe.db.get_list("Student Group", filters={"group_based_on": "Batch"}):
+ students = get_student_group_students(d.name)
+ for stud in students:
+ make_attendance_records(stud.student, stud.student_name, status[weighted_choice([9,4])], None, d.name, current_date)
+
+def make_fees():
+ for d in range(1,10):
+ random_fee = get_random("Fees", {"paid_amount": 0})
+ collect_fees(random_fee, frappe.db.get_value("Fees", random_fee, "outstanding_amount"))
+
+def make_assessment_plan(date):
+ for d in range(1,4):
+ random_group = get_random("Student Group", {"group_based_on": "Course"}, True)
+ doc = frappe.new_doc("Assessment Plan")
+ doc.student_group = random_group.name
+ doc.course = random_group.course
+ doc.assessment_group = get_random("Assessment Group", {"is_group": 0, "parent": "2017-18 (Semester 2)"})
+ doc.grading_scale = get_random("Grading Scale")
+ doc.maximum_assessment_score = 100
def make_course_schedule(start_date, end_date):
for d in frappe.db.get_list("Student Group"):