def preview_report_card(doc): doc = frappe._dict(json.loads(doc)) doc.students = [doc.student] if not (doc.student_name and doc.student_batch): program_enrollment = frappe.get_all( "Program Enrollment", fields=["student_batch_name", "student_name"], filters={ "student": doc.student, "docstatus": ('!=', 2), "academic_year": doc.academic_year }) if program_enrollment: doc.batch = program_enrollment[0].student_batch_name doc.student_name = program_enrollment[0].student_name # get the assessment result of the selected student values = get_formatted_result( doc, get_course=True, get_all_assessment_groups=doc.include_all_assessment) assessment_result = values.get("assessment_result").get(doc.student) courses = values.get("course_dict") course_criteria = get_courses_criteria(courses) # get the assessment group as per the user selection if doc.include_all_assessment: assessment_groups = get_child_assessment_groups(doc.assessment_group) else: assessment_groups = [doc.assessment_group] # get the attendance of the student for that peroid of time. doc.attendance = get_attendance_count(doc.students[0], doc.academic_year, doc.academic_term) template = "erpnext/education/doctype/student_report_generation_tool/student_report_generation_tool.html" base_template_path = "frappe/www/printview.html" from frappe.www.printview import get_letter_head letterhead = get_letter_head(frappe._dict({"letter_head": doc.letterhead}), not doc.add_letterhead) html = frappe.render_template( template, { "doc": doc, "assessment_result": assessment_result, "courses": courses, "assessment_groups": assessment_groups, "course_criteria": course_criteria, "letterhead": letterhead and letterhead.get('content', None), "add_letterhead": doc.add_letterhead if doc.add_letterhead else 0 }) final_template = frappe.render_template(base_template_path, { "body": html, "title": "Report Card" }) frappe.response.filename = "Report Card " + doc.students[0] + ".pdf" frappe.response.filecontent = get_pdf(final_template) frappe.response.type = "download"
def execute(filters=None): columns, data, grades = [], [], [] args = frappe._dict() course_wise_analysis = defaultdict(dict) args["academic_year"] = filters.get("academic_year") assessment_group = args["assessment_group"] = filters.get( "assessment_group") student_group = filters.get("student_group") args.students = frappe.db.sql_list( "select student from `tabStudent Group Student` where parent=%s", (student_group)) values = get_formatted_result(args, get_course=True) student_details = values.get("student_details") assessment_result = values.get("assessment_result") course_dict = values.get("course_dict") for student in args.students: if student_details.get(student): student_row = {} student_row["student"] = student student_row["student_name"] = student_details[student] for course in course_dict: scrub_course = frappe.scrub(course) if assessment_group in assessment_result[student][course]: student_row[ "grade_" + scrub_course] = assessment_result[student][ course][assessment_group]["Total Score"]["grade"] student_row[ "score_" + scrub_course] = assessment_result[student][ course][assessment_group]["Total Score"]["score"] # create the list of possible grades if student_row["grade_" + scrub_course] not in grades: grades.append(student_row["grade_" + scrub_course]) # create the dict of for gradewise analysis if student_row[ "grade_" + scrub_course] not in course_wise_analysis[course]: course_wise_analysis[course][student_row[ "grade_" + scrub_course]] = 1 else: course_wise_analysis[course][student_row[ "grade_" + scrub_course]] += 1 data.append(student_row) course_list = [d for d in course_dict] columns = get_column(course_dict) chart = get_chart_data(grades, course_list, course_wise_analysis) return columns, data, None, chart
def preview_report_card(doc): doc = frappe._dict(json.loads(doc)) doc.students = [doc.student] if not (doc.student_name and doc.student_batch): program_enrollment = frappe.get_all("Program Enrollment", fields=["student_batch_name", "student_name"], filters={"student": doc.student, "docstatus": ('!=', 2), "academic_year": doc.academic_year}) if program_enrollment: doc.batch = program_enrollment[0].student_batch_name doc.student_name = program_enrollment[0].student_name # get the assessment result of the selected student values = get_formatted_result(doc, get_course=True, get_all_assessment_groups=doc.include_all_assessment) assessment_result = values.get("assessment_result").get(doc.student) courses = values.get("course_dict") course_criteria = get_courses_criteria(courses) # get the assessment group as per the user selection if doc.include_all_assessment: assessment_groups = get_child_assessment_groups(doc.assessment_group) else: assessment_groups = [doc.assessment_group] # get the attendance of the student for that peroid of time. doc.attendance = get_attendance_count(doc.students[0], doc.academic_year, doc.academic_term) template = "erpnext/education/doctype/student_report_generation_tool/student_report_generation_tool.html" base_template_path = "frappe/www/printview.html" from frappe.www.printview import get_letter_head letterhead = get_letter_head(frappe._dict({"letter_head": doc.letterhead}), not doc.add_letterhead) html = frappe.render_template(template, { "doc": doc, "assessment_result": assessment_result, "courses": courses, "assessment_groups": assessment_groups, "course_criteria": course_criteria, "letterhead": letterhead.content, "add_letterhead": doc.add_letterhead if doc.add_letterhead else 0 }) final_template = frappe.render_template(base_template_path, {"body": html, "title": "Report Card"}) frappe.response.filename = "Report Card " + doc.students[0] + ".pdf" frappe.response.filecontent = get_pdf(final_template) frappe.response.type = "download"
def execute(filters=None): columns, data, grades = [], [], [] args = frappe._dict() course_wise_analysis = defaultdict(dict) args["academic_year"] = filters.get("academic_year") assessment_group = args["assessment_group"] = filters.get("assessment_group") student_group = filters.get("student_group") args.students = frappe.db.sql_list("select student from `tabStudent Group Student` where parent=%s", (student_group)) values = get_formatted_result(args, get_course=True) student_details = values.get("student_details") assessment_result = values.get("assessment_result") course_dict = values.get("course_dict") for student in args.students: if student_details.get(student): student_row = {} student_row["student"] = student student_row["student_name"] = student_details[student] for course in course_dict: scrub_course = frappe.scrub(course) if assessment_group in assessment_result[student][course]: student_row["grade_" + scrub_course] = assessment_result[student][course][assessment_group]["Total Score"]["grade"] student_row["score_" + scrub_course] = assessment_result[student][course][assessment_group]["Total Score"]["score"] # create the list of possible grades if student_row["grade_" + scrub_course] not in grades: grades.append(student_row["grade_" + scrub_course]) # create the dict of for gradewise analysis if student_row["grade_" + scrub_course] not in course_wise_analysis[course]: course_wise_analysis[course][student_row["grade_" + scrub_course]] = 1 else: course_wise_analysis[course][student_row["grade_" + scrub_course]] += 1 data.append(student_row) course_list = [d for d in course_dict] columns = get_column(course_dict) chart = get_chart_data(grades, course_list, course_wise_analysis) return columns, data, None, chart