Exemplo n.º 1
0
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
Exemplo n.º 3
0
 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')
Exemplo n.º 4
0
 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')
Exemplo n.º 5
0
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}
Exemplo n.º 6
0
 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')
Exemplo n.º 7
0
 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')
Exemplo n.º 8
0
 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')
Exemplo n.º 9
0
    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)
        }
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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
Exemplo n.º 12
0
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
Exemplo n.º 13
0
 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')