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(), }
def getAllForms(): return {'forms': blankFormsDOM.getAll()}
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(), }