def getStudentProfileForm(): studentID = ObjectId(request.json['student_id']) form_id = ObjectId(request.json['form_id']) form_data = FormsDOM.getFormData(ObjectId(form_id)) blank_form_id = FormsDOM.getBlankFormId(form_id) blank_form_data = blankFormsDOM.getFormData(blank_form_id) parent_id = FormsDOM.getInfo(form_id, 'parent_id') parent_profile = parentsDOM.getParentProfile(parent_id) cleaned_parent_profile = {} cleaned_parent_profile['first_name'] = parent_profile['first_name'] cleaned_parent_profile['last_name'] = parent_profile['last_name'] cleaned_parent_profile['email'] = parent_profile['email'] form_info = {} form_info['name'] = blankFormsDOM.getFormName(blank_form_id) form_info['last_updated'] = FormsDOM.getLastUpdated(form_id) form_info['completed'] = FormsDOM.isComplete(form_id) isAuthorizedBool = isAuthorized(get_token_auth_header(), ['developer', 'admin']) return { 'form_data': form_data, 'blank_form_data': blank_form_data, 'basic_info': studentsDOM.getBasicInfo(studentID), 'parent_profile': cleaned_parent_profile, 'form_info': form_info, 'isAuthorized': isAuthorizedBool, }
def getStudentForms(): student_id = ObjectId(request.json['student_id']) curr_link = request.json['parent_key'] try: parentId = parentsDOM.get(currLink=curr_link) except AssertionError as e: raise AuthError({'wrong link': True}, 401) if studentsDOM.isArchived(student_id): raise AuthError({'archived': True}, 401) if parentsDOM.isExpired(parent_id): emailParent(parent_id, '', 'Your updated link is below:') raise AuthError({'expired': True}, 426) form_ids = studentsDOM.getAllFormIds(student_id) form_data = [] for id in form_ids: if parent_id == FormsDOM.getParentId(id): blank_form_data = FormsDOM.getBlankFormId( id) # will assert if formid does not exist form_data.append({ 'form_id': str(id), 'form_name': FormsDOM.getFormName(id), 'last_updated': FormsDOM.getLastUpdated(id), 'last_viewed': FormsDOM.getLastViewed(id), 'completed': FormsDOM.isComplete(id) }) return { 'form_data': form_data, 'student_info': studentsDOM.getBasicInfo(student_id), }
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 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(), }