def test_grade(self): grade = get_grade("_Test Grading Scale", 80) self.assertEquals("A", grade) grade = get_grade("_Test Grading Scale", 70) self.assertEquals("B", grade)
def validate_grade(self): self.total_score = 0.0 for d in self.details: d.grade = get_grade(self.grading_scale, (flt(d.score) / d.maximum_score) * 100) self.total_score += d.score self.grade = get_grade(self.grading_scale, (self.total_score / self.maximum_score) * 100)
def get_result_map(): result_dict = defaultdict(dict) kounter = defaultdict(dict) assessment_result = frappe.db.sql( '''select ar.student, ard.assessment_criteria, ard.grade, ard.score from `tabAssessment Result` ar, `tabAssessment Result Detail` ard where ar.assessment_plan in (%s) and ar.name=ard.parent and ar.docstatus=1 order by ard.assessment_criteria''' % ', '.join(['%s'] * len(assessment_plan_list)), tuple(assessment_plan_list), as_dict=1, debug=True) for result in assessment_result: if "total_score" in result_dict[result.student]: total_score = result_dict[ result.student]["total_score"] + result.score else: total_score = result.score total = get_grade(grading_scale, (total_score / total_maximum_score) * 100) if result.grade in kounter[result.assessment_criteria]: kounter[result.assessment_criteria][result.grade] += 1 else: kounter[result.assessment_criteria].update({result.grade: 1}) if "Total" not in kounter: kounter["Total"] = {} if "total" in result_dict[result.student]: prev_grade = result_dict[result.student]["total"] prev_grade_count = kounter["Total"].get(prev_grade) - 1 kounter["Total"].update({prev_grade: prev_grade_count}) latest_grade_count = kounter["Total"].get( total) + 1 if kounter["Total"].get(total) else 1 kounter["Total"].update({total: latest_grade_count}) result_dict[result.student].update({ frappe.scrub(result.assessment_criteria): result.grade, frappe.scrub(result.assessment_criteria) + "_score": result.score, "total_score": total_score, "total": total }) return result_dict, kounter
def get_result_map(): result_dict = defaultdict(dict) kounter = defaultdict(dict) assessment_result = frappe.db.sql('''select ar.student, ard.assessment_criteria, ard.grade, ard.score from `tabAssessment Result` ar, `tabAssessment Result Detail` ard where ar.assessment_plan in (%s) and ar.name=ard.parent and ar.docstatus=1 order by ard.assessment_criteria''' %', '.join(['%s']*len(assessment_plan_list)), tuple(assessment_plan_list), as_dict=1) for result in assessment_result: if "total_score" in result_dict[result.student]: total_score = result_dict[result.student]["total_score"] + result.score else: total_score = result.score total = get_grade(grading_scale, (total_score/total_maximum_score)*100) if result.grade in kounter[result.assessment_criteria]: kounter[result.assessment_criteria][result.grade] += 1 else: kounter[result.assessment_criteria].update({result.grade: 1}) if "Total" not in kounter: kounter["Total"] = {} if "total" in result_dict[result.student]: prev_grade = result_dict[result.student]["total"] prev_grade_count = kounter["Total"].get(prev_grade) - 1 kounter["Total"].update({prev_grade: prev_grade_count}) latest_grade_count = kounter["Total"].get(total)+1 if kounter["Total"].get(total) else 1 kounter["Total"].update({total: latest_grade_count}) result_dict[result.student].update({ frappe.scrub(result.assessment_criteria): result.grade, frappe.scrub(result.assessment_criteria)+"_score": result.score, "total_score": total_score, "total": total }) return result_dict, kounter
def validate_grade(self): self.total_score = 0.0 for d in self.details: d.grade = get_grade(self.grading_scale, (flt(d.score)/d.maximum_score)*100) self.total_score += d.score self.grade = get_grade(self.grading_scale, (self.total_score/self.maximum_score)*100)