def get_list_of_students_report_fao(params): stateCode = str(params[Constants.STATECODE]) districtId = str(params[Constants.DISTRICTGUID]) schoolId = str(params[Constants.SCHOOLGUID]) asmtGrade = params.get(Constants.ASMTGRADE) asmtSubject = params.get(Constants.ASMTSUBJECT) asmtYear = params.get(Constants.ASMTYEAR) results = get_list_of_students_fao(params) subjects_map = get_subjects_map(asmtSubject) asmt_data = __get_asmt_data(results) los_results = {} los_results['assessments'] = format_assessments_fao(results, subjects_map) los_results['groups'] = get_group_filters(results) # color metadata custom_metadata_map = get_custom_metadata(stateCode, None) los_results[Constants.METADATA] = __format_cut_points(asmt_data, subjects_map, custom_metadata_map) los_results[Constants.CONTEXT] = get_breadcrumbs_context(state_code=stateCode, district_id=districtId, school_id=schoolId, asmt_grade=asmtGrade) los_results[Constants.SUBJECTS] = __reverse_map(subjects_map) # Additional queries for LOS report los_results[Constants.ASMT_ADMINISTRATION] = get_asmt_administration_years(stateCode, districtId, schoolId, asmtGrade, asmt_year=asmtYear) los_results[Constants.NOT_STATED] = get_not_stated_count(params) los_results[Constants.ASMT_PERIOD_YEAR] = get_asmt_academic_years(stateCode) return los_results
def get_list_of_students_report_fao(params): stateCode = str(params[Constants.STATECODE]) districtId = str(params[Constants.DISTRICTGUID]) schoolId = str(params[Constants.SCHOOLGUID]) asmtGrade = params.get(Constants.ASMTGRADE) asmtSubject = params.get(Constants.ASMTSUBJECT) asmtYear = params.get(Constants.ASMTYEAR) results = get_list_of_students_fao(params) subjects_map = get_subjects_map(asmtSubject) asmt_data = __get_asmt_data(results) los_results = {} los_results['assessments'] = format_assessments_fao(results, subjects_map) los_results['groups'] = get_group_filters(results) # color metadata custom_metadata_map = get_custom_metadata(stateCode, None) los_results[Constants.METADATA] = __format_cut_points( asmt_data, subjects_map, custom_metadata_map) los_results[Constants.CONTEXT] = get_breadcrumbs_context( state_code=stateCode, district_id=districtId, school_id=schoolId, asmt_grade=asmtGrade) los_results[Constants.SUBJECTS] = __reverse_map(subjects_map) # Additional queries for LOS report los_results[Constants.ASMT_ADMINISTRATION] = get_asmt_administration_years( stateCode, districtId, schoolId, asmtGrade, asmt_year=asmtYear) los_results[Constants.NOT_STATED] = get_not_stated_count(params) los_results[Constants.ASMT_PERIOD_YEAR] = get_asmt_academic_years( stateCode) return los_results
def testDistrictContext(self): results = get_breadcrumbs_context(state_code='NC', district_id='228') self.assertEqual(len(results['items']), 3) self.assertEqual(results['items'][1]['name'], 'North Carolina') self.assertEqual(results['items'][1]['type'], 'state') self.assertEqual(results['items'][2]['name'], 'Sunset School District') self.assertEqual(results['items'][2]['type'], 'district') self.assertEqual(results['items'][2]['id'], '228')
def testStateContext(self): results = get_breadcrumbs_context(state_code='NC') self.assertEqual(len(results['items']), 2) self.assertEqual(results['items'][0]['name'], 'Home') self.assertEqual(results['items'][0]['type'], 'home') self.assertEqual(results['items'][1]['name'], 'North Carolina') self.assertEqual(results['items'][1]['id'], 'NC') self.assertEqual(results['items'][1]['type'], 'state')
def user_info_service(*args, **kwds): ''' Returns current user information :param args: function to accept an arbitrary number of arguments. :param kwds: function to accept an arbitrary number of keyword arguments. ''' context = get_breadcrumbs_context() return {'context': context}
def testStudentContext(self): results = get_breadcrumbs_context(state_code='NC', district_id='228', school_id='242', asmt_grade='3', student_name='StudentName') self.assertEqual(len(results['items']), 6) self.assertEqual(results['items'][5]['name'], 'StudentName') self.assertEqual(results['items'][5]['type'], 'student')
def testGradeContext(self): results = get_breadcrumbs_context(state_code='NC', district_id='228', school_id='242', asmt_grade='3') self.assertEqual(len(results['items']), 5) self.assertEqual(results['items'][4]['name'], '3') self.assertEqual(results['items'][4]['id'], '3') self.assertEqual(results['items'][4]['type'], 'grade')
def testSchoolContext(self): results = get_breadcrumbs_context(state_code='NC', district_id='228', school_id='242') self.assertEqual(len(results['items']), 4) self.assertEqual(results['items'][1]['name'], 'North Carolina') self.assertEqual(results['items'][2]['name'], 'Sunset School District') self.assertEqual(results['items'][3]['name'], 'Sunset - Eastern Elementary') self.assertEqual(results['items'][3]['id'], '242') self.assertEqual(results['items'][3]['type'], 'school')
def arrange_results(self, results, **param): ''' Arrange the results in optimal way to be consumed by front-end :rtype: dict :returns: results arranged for front-end consumption ''' subjects = OrderedDict({ Constants.MATH: Constants.SUBJECT1, Constants.ELA: Constants.SUBJECT2 }) custom_metadata = get_custom_metadata(param.get(Constants.STATECODE), self.tenant, self.is_public) record_manager = RecordManager(subjects, self.get_asmt_levels( subjects, custom_metadata), custom_metadata, is_public=self.is_public, **param) for result in results: record_manager.update_record(result) state_code = param.get(Constants.STATECODE) # bind the results return { Constants.METADATA: custom_metadata, Constants.SUMMARY: record_manager.get_summary(), Constants.RECORDS: record_manager.get_records(), Constants.SUBJECTS: record_manager.get_subjects( ), # reverse map keys and values for subject Constants.CONTEXT: get_breadcrumbs_context(state_code=state_code, district_id=param.get( Constants.DISTRICTGUID), school_id=param.get(Constants.SCHOOLGUID), tenant=self.tenant, is_public=self.is_public), Constants.ASMT_PERIOD_YEAR: get_asmt_academic_years(state_code, self.tenant, None, self.is_public) }
def get_student_report(params): ''' Individual Student Report ''' student_id = params[Constants.STUDENTGUID] state_code = params[Constants.STATECODE] academic_year = params.get(Constants.ASMTYEAR) asmt_type = params.get(Constants.ASMTTYPE) asmt_type = asmt_type if asmt_type and asmt_type == AssessmentType.INTERIM_ASSESSMENT_BLOCKS else None with EdCoreDBConnection(state_code=state_code) as connection: # choose query IAB or other assessment query_function = {AssessmentType.INTERIM_ASSESSMENT_BLOCKS: __prepare_query_iab, None: __prepare_query} # choose arrange results for the client IAB or other assessment arrange_function = {AssessmentType.INTERIM_ASSESSMENT_BLOCKS: __arrange_results_iab, None: __arrange_results} query = query_function[asmt_type](connection, params) result = connection.get_result(query) if not result: logger.error("Individual student report: there are no results for student id : %s", student_id) raise NotFoundException("There are no results for student id {0}".format(student_id)) records = [record for record in result if record['asmt_period_year'] == academic_year] first_student = records[0] if len(records) > 0 else result[0] state_code = first_student[Constants.STATE_CODE] district_id = first_student[Constants.DISTRICT_ID] school_id = first_student[Constants.SCHOOL_ID] asmt_grade = first_student['asmt_grade'] student_name = format_full_name(first_student['first_name'], first_student['middle_name'], first_student['last_name']) context = get_breadcrumbs_context(state_code=state_code, district_id=district_id, school_id=school_id, asmt_grade=asmt_grade, student_name=student_name) student_report_asmt_administration = get_asmt_administration_years_isr(state_code, student_ids=student_id) # color metadata custom_metadata_map = get_custom_metadata(result[0].get(Constants.STATE_CODE), None) # subjects map subjects_map = get_subjects_map() result = arrange_function[asmt_type](result, subjects_map, custom_metadata_map) result['context'] = context result[Constants.METADATA] = {Constants.BRANDING: custom_metadata_map.get(Constants.BRANDING)} result[Constants.SUBJECTS] = {v: k for k, v in subjects_map.items()} result['asmt_administration'] = student_report_asmt_administration return result
def get_list_of_students_report_iab(params): stateCode = str(params[Constants.STATECODE]) districtId = str(params[Constants.DISTRICTGUID]) schoolId = str(params[Constants.SCHOOLGUID]) asmtGrade = params.get(Constants.ASMTGRADE) asmtSubject = params.get(Constants.ASMTSUBJECT) asmtYear = params.get(Constants.ASMTYEAR) results = get_list_of_students_iab(params) subjects_map = get_subjects_map(asmtSubject) los_results = {} los_results[Constants.ASSESSMENTS] = format_assessments_iab(results, subjects_map) los_results['groups'] = get_group_filters(results) # color metadata los_results[Constants.CONTEXT] = get_breadcrumbs_context(state_code=stateCode, district_id=districtId, school_id=schoolId, asmt_grade=asmtGrade) los_results[Constants.SUBJECTS] = __reverse_map(subjects_map) # Additional queries for LOS report los_results[Constants.ASMT_ADMINISTRATION] = get_asmt_administration_years(stateCode, districtId, schoolId, asmtGrade, asmt_year=asmtYear) los_results[Constants.NOT_STATED] = get_not_stated_count(params) los_results[Constants.ASMT_PERIOD_YEAR] = get_asmt_academic_years(stateCode) los_results[Constants.INTERIM_ASSESSMENT_BLOCKS] = get_IAB_claims(los_results[Constants.ASSESSMENTS][AssessmentType.INTERIM_ASSESSMENT_BLOCKS], los_results[Constants.SUBJECTS]) return los_results
def get_student_report(params): ''' Individual Student Report ''' student_id = params[Constants.STUDENTGUID] state_code = params[Constants.STATECODE] academic_year = params.get(Constants.ASMTYEAR) asmt_type = params.get(Constants.ASMTTYPE) asmt_type = asmt_type if asmt_type and asmt_type == AssessmentType.INTERIM_ASSESSMENT_BLOCKS else None with EdCoreDBConnection(state_code=state_code) as connection: # choose query IAB or other assessment query_function = { AssessmentType.INTERIM_ASSESSMENT_BLOCKS: __prepare_query_iab, None: __prepare_query } # choose arrange results for the client IAB or other assessment arrange_function = { AssessmentType.INTERIM_ASSESSMENT_BLOCKS: __arrange_results_iab, None: __arrange_results } query = query_function[asmt_type](connection, params) result = connection.get_result(query) if not result: logger.error( "Individual student report: there are no results for student id : %s", student_id) raise NotFoundException( "There are no results for student id {0}".format(student_id)) records = [ record for record in result if record['asmt_period_year'] == academic_year ] first_student = records[0] if len(records) > 0 else result[0] state_code = first_student[Constants.STATE_CODE] district_id = first_student[Constants.DISTRICT_ID] school_id = first_student[Constants.SCHOOL_ID] asmt_grade = first_student['asmt_grade'] student_name = format_full_name(first_student['first_name'], first_student['middle_name'], first_student['last_name']) context = get_breadcrumbs_context(state_code=state_code, district_id=district_id, school_id=school_id, asmt_grade=asmt_grade, student_name=student_name) student_report_asmt_administration = get_asmt_administration_years_isr( state_code, student_ids=student_id) # color metadata custom_metadata_map = get_custom_metadata( result[0].get(Constants.STATE_CODE), None) # subjects map subjects_map = get_subjects_map() result = arrange_function[asmt_type](result, subjects_map, custom_metadata_map) result['context'] = context result[Constants.METADATA] = { Constants.BRANDING: custom_metadata_map.get(Constants.BRANDING) } result[Constants.SUBJECTS] = {v: k for k, v in subjects_map.items()} result['asmt_administration'] = student_report_asmt_administration return result
def test_No_state_code(self): results = get_breadcrumbs_context() self.assertEqual(len(results['items']), 1) self.assertEqual(results['items'][0]['name'], 'Home') self.assertEqual(results['items'][0]['type'], 'home')