예제 #1
0
def getStudents():
    blankFormIds = list(
        map(lambda currForm: ObjectId(currForm['id']),
            request.json['blankForms']))
    noBlankFormFilter = len(
        blankFormIds) == 0  # hoping caching will reduce complexity

    students = studentsDOM.getStudents()
    studentsWithForms = []
    for student in students:
        if noBlankFormFilter:
            forms_completed = 0
            for form in student['form_ids']:
                if FormsDOM.isComplete(form):
                    forms_completed += 1
            student['forms_completed'] = str(forms_completed) + "/" + str(
                len(student['form_ids']))
            student['completion_rate'] = forms_completed / len(
                student['form_ids'])
            del student['form_ids']
            studentsWithForms.append(student)

        else:
            forms_completed = 0
            forms_available = 0
            for form in student['form_ids']:
                currFormBlankFormId = FormsDOM.getBlankFormId(form)
                if currFormBlankFormId in blankFormIds:
                    if (FormsDOM.isComplete(form)):
                        forms_completed += 1
                    forms_available += 1

            if forms_available > 0:
                student['forms_completed'] = str(forms_completed) + "/" + str(
                    forms_available)
                student['completion_rate'] = forms_completed / forms_available
                del student['form_ids']
                studentsWithForms.append(student)
    return {
        'students': studentsWithForms,
        'authorized': isAuthorized(get_token_auth_header(),
                                   ['developer', 'admin']),
        'forms': blankFormsDOM.getAll(),
    }
예제 #2
0
def getAllForms():
    return {'forms': blankFormsDOM.getAll()}
예제 #3
0
def getStudentProfile():
    studentID = ObjectId(request.json['id'])
    students_forms = studentsDOM.getForms(studentID)
    forms = []
    for formId in students_forms:
        curr_form_data_raw = FormsDOM.getForm(formId)
        formName = blankFormsDOM.getBlankFormName(
            curr_form_data_raw['blank_forms_id'])
        formYear = blankFormsDOM.getFormYear(
            curr_form_data_raw['blank_forms_id'])
        formTag = blankFormsDOM.getFormTag(
            curr_form_data_raw['blank_forms_id'])
        curr_form_data = dict()
        curr_form_data['form_name'] = str(formName)
        curr_form_data['form_year'] = str(formYear)
        curr_form_data['form_tag'] = str(formTag)
        curr_form_data['form_id'] = str(curr_form_data_raw['_id'])
        curr_form_data['blank_forms_id'] = str(
            curr_form_data_raw['blank_forms_id'])
        curr_form_data['last_updated'] = curr_form_data_raw['last_updated']
        curr_form_data['completed'] = FormsDOM.isComplete(formId)
        parent_data = parentsDOM.getParentProfile(
            ObjectId(curr_form_data_raw['parent_id']))
        curr_form_data['p_first_name'] = parent_data['first_name']
        curr_form_data['p_last_name'] = parent_data['last_name']
        curr_form_data['p_email'] = parent_data['email']
        forms.append(curr_form_data)

    parentIds = studentsDOM.getParents(studentID)
    parents = []
    for parentId in parentIds:
        parent = parentsDOM.getParentProfile(parentId)
        studentsOfParent = []
        for currStudentID in parent['student_ids']:
            student = studentsDOM.getFullInfo(currStudentID)
            forms_completed = 0
            for form in student['form_ids']:
                if FormsDOM.isComplete(form):
                    forms_completed += 1
            student['forms_completed'] = str(forms_completed) + "/" + str(
                len(student['form_ids']))
            student['completion_rate'] = forms_completed / len(
                student['form_ids'])
            cleanedStudent = {}
            cleanedStudent['id'] = str(student['_id'])
            cleanedStudent['first_name'] = student['first_name']
            cleanedStudent['middle_name'] = student['middle_name']
            cleanedStudent['last_name'] = student['last_name']
            cleanedStudent['DOB'] = student['DOB']
            cleanedStudent['grade'] = student['grade']
            cleanedStudent['archived'] = student['archived']
            cleanedStudent['forms_completed'] = student['forms_completed']
            cleanedStudent['completion_rate'] = student['completion_rate']
            studentsOfParent.append(cleanedStudent)
        cleanedParent = {}
        cleanedParent['id'] = str(parentId)
        cleanedParent['children'] = studentsOfParent
        cleanedParent['first_name'] = parent['first_name']
        cleanedParent['last_name'] = parent['last_name']
        cleanedParent['email'] = parent['email']
        parents.append(cleanedParent)
    return {
        'forms': forms,
        'basic_info': studentsDOM.getBasicInfo(studentID),
        'blank_forms': blankFormsDOM.getAll(),
        'parents': parents,
        'authorized': isAuthorized(get_token_auth_header(),
                                   ['developer', 'admin']),
        'tags': utilitiesDOM.getTags(),
        'years': utilitiesDOM.getYears(),
    }