def get_rated_students_for_class(form_id: bson.ObjectId,
                                 count) -> List[Student]:
    my_class = Form.objects(id=form_id).first()
    students = Student.objects(
        id__in=my_class.Student_ids).all().order_by("-" +
                                                    "avg_score").limit(count)
    return list(students)
def add_score(stud_id, score, subject) -> Score:
    student = Student.objects(id=stud_id).first()
    mscore = Score()
    mscore.name = subject
    mscore.score = score
    mscore.save()
    student.scores_ids.append(mscore.id)
    student.save()
def update_aver_score_student(stud_id) -> Student:

    Student.objects(id=stud_id).update(
        avg_score=get_average_score_for_student(stud_id))
def add_district(stud_id) -> Student:
    Student.objects(id=stud_id).update(district=generator.generate_distr())
def get_average_score_for_form(form_id: bson.ObjectId):
    my_form = Form.objects(id=form_id).first()
    avg = Student.objects(id__in=my_form.Student_ids).average('avg_score')
    return avg
def get_average_score_for_student(student_id: bson.ObjectId):
    my_student = Student.objects(id=student_id).first()
    avg = Score.objects(id__in=my_student.scores_ids).average('score')
    return avg
def get_scores_for_student(student_id: bson.ObjectId) -> List[Score]:
    my_student = Student.objects(id=student_id).first()
    scores = Score.objects(id__in=my_student.scores_ids).all()

    return list(scores)
def get_students_for_class(class_id: bson.ObjectId) -> List[Student]:
    my_class = Form.objects(id=class_id).first()
    students = Student.objects(id__in=my_class.Student_ids).all()

    return list(students)