예제 #1
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        amount = client.submit('UnivMajorNumTask',
                               dict(UNITID=cid))['MAJORNUM']
        majors = client.submit('UnivMajorTask', dict(UNITID=cid))['rows']

        lenm = len(majors)
        top = [[], []]
        topn = 8
        labels, counts = top
        for i in range(topn):
            major = majors[lenm - 1 - i]
            labels.append(major['CIPCODE'])
            counts.append(major['CTOTALT'])

        cold = []
        coldn = 3
        for i in range(coldn):
            cold.append(majors[i]['CIPCODE'])

        result = {'amount': amount, 'cold': cold, 'top': top}
        self.write(result)
예제 #2
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        cats = client.submit('StatiCategoryL3', dict(ID='student'))['rows']
        result = dict(dict=dict(),
                      category=[],
                      detail=[ [[],[],[]] for cat in cats])
        ids = []
        for i, cat in enumerate(cats):
            ids.append(cat['id'])
            result['category'].append(cat['id'])
            detail = result['detail'][i]
            univs = client.submit('StatiUnivTask', dict(UNITID=cid, ID=cat['id'], FIELDS=['AVERAGE']))['rows']
            for univ in univs:
                ids.append(univ['TYPEID1'])
                detail[0].append(univ['TYPEID1'])
                detail[1].append(univ['AVERAGE'])

            states = client.submit('StatiStateTask', dict(UNITID=cid, ID=cat['id'], FIELDS=['AVERAGE']))['rows']
            for states in states:
                detail[2].append(states['AVERAGE'])

        kvs = client.submit('StatiDictValue', dict(IDS=ids))['rows']

        #print(kvs)
        for kv in kvs:
            result['dict'][kv['KEY']] = kv['VALUE']

        self.write(result)
예제 #3
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        names = client.submit('UnivNameTask', dict(UNITID=cid, LANG=['CN','EN']))['rows']

        for n in names:
            if n['LANG'] == 'EN':
                name_local = n['NAME']
            elif n['LANG'] == 'CN':
                name = n['NAME']

        admis = client.submit('UnivEnrolAdmisTask', dict(UNITID=cid))

        acceptance_rate = admis['ADMSSN'] / admis['APPLCN']
        student_amount = admis['EFTOTLT_TOTAL']

        tution = client.submit('UnivTuitionOnCampusTask', dict(UNITID=cid))
        tution_amount_local = tution['CHG3AY3']

        mservice = self.application.settings["media_service"]
        result = dict(cover=self.static_url(mservice.college_cover_src(slug)),
                  logo=self.static_url(mservice.college_logo_src(slug)),
                  name=name,
                  name_local=name_local,
                  acceptance_rate=acceptance_rate,
                  student_amount=student_amount,
                  tution_amount_local=tution_amount_local,
        )

        #print(result)
        self.write(result)
예제 #4
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        rank_type = client.submit('UnivRankTypeTask', dict(UNITID=cid))['rows']
        result = dict(
            rank=[[], [dict(rank=[[], []], top=[[], []]) for t in rank_type]])
        for i, t in enumerate(rank_type):
            result['rank'][0].append(t['RANKTYPE'])
            ranks = client.submit('UnivRankAllTask',
                                  dict(UNITID=cid,
                                       RANKTYPE=t['RANKTYPE']))['rows']
            tmp = result['rank'][1][i]
            max_year = 0
            for rank in ranks:
                tmp['rank'][0].append(rank['YEAR'])
                tmp['rank'][1].append(rank['RANK'])
                max_year = rank['YEAR']

            sub_ranks = client.submit(
                'UnivSubRankTask',
                dict(UNITID=cid, RANKTYPE=t['RANKTYPE'],
                     YEAR=max_year))['rows']
            for srank in sub_ranks:
                tmp['top'][0].append(srank['FIELDTYPE'])
                tmp['top'][1].append(srank['RANK'])

        self.write(result)
예제 #5
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        amount = client.submit('UnivMajorNumTask', dict(UNITID=cid))['MAJORNUM']
        majors = client.submit('UnivMajorTask', dict(UNITID=cid))['rows']

        lenm = len(majors)
        top = [[], []]
        topn = 8
        labels, counts = top
        for i in range(topn):
            major = majors[lenm - 1 - i]
            labels.append(major['CIPCODE'])
            counts.append(major['CTOTALT'])

        cold = []
        coldn = 3
        for i in range(coldn):
            cold.append(majors[i]['CIPCODE'])

        result = {'amount': amount, 'cold': cold, 'top': top}
        self.write(result)
예제 #6
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        tui_on_campus = client.submit(
            'UnivTuitionOnCampusTask', {'UNITID': cid})
        tui_off_campus = client.submit(
            'UnivTuitionOffCampusTask', {'UNITID': cid})
        tui_compare = client.submit(
            'UnivTuitionCompareTask', {'UNITID': cid})

        tui_on_campus_list = [tui_on_campus['CHG3AY3'], tui_on_campus['CHG4AY3'],
                              tui_on_campus['CHG5AY3'], tui_on_campus['CHG6AY3']]
        tui_off_campus_list = [tui_off_campus['CHG3AY3'], tui_off_campus['CHG4AY3'],
                               tui_off_campus['CHG7AY3'], tui_off_campus['CHG8AY3']]

        tui_campus_label = ['学费', '书杂费', '住宿伙食', '其他费用']
        tui_on_campus_list = [x for x in tui_on_campus_list if x is not None]
        tui_off_campus_list = [x for x in tui_off_campus_list if x is not None]
        tui_on_campus_label = tui_campus_label[:len(tui_on_campus_list)]
        tui_off_campus_label = tui_campus_label[:len(tui_off_campus_list)]

        result = dict(category=["住校学费", "校外学费", "学费对比"],
                      details=[
            [tui_on_campus_label, tui_on_campus_list],
            [tui_off_campus_label, tui_off_campus_list]],
            comparetui=[['本校', '本州', '该地区', '全美'],
                        [tui_on_campus['CHG3AY3'], tui_on_campus['CHG4AY3'],
                         tui_on_campus['CHG5AY3'], tui_on_campus['CHG6AY3']]],
        )

        self.write(result)
예제 #7
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        intro_infos = client.submit('UnivIntroTask', dict(UNITID=cid))

        EFTOTLT_GR = intro_infos['EFTOTLT_GR']
        EFTOTLT_UNGR = intro_infos['EFTOTLT_UNGR']
        L4GR150 = intro_infos['L4GR150']
        EFTOTLW =intro_infos['EFTOTLW']
        EFTOTLM = intro_infos['EFTOTLM']
        APPLCN = intro_infos['APPLCN']
        ADMSSN = intro_infos['ADMSSN']
        INSTSIZE = intro_infos['INSTSIZE']
        CHG3AY3 = intro_infos['CHG3AY3']
        LOCALE = intro_infos['LOCALE']
        STUFACR = intro_infos['STUFACR']
        LOCATE_V = intro_infos['LOCALE_V']
        INSTSIZE_V = intro_infos['INSTSIZE_V']

        stufacr_label, stufacr_value = find_DICT_KEY_LIST(STUDENTFACULTY, STUFACR)
        tuition_label, tuition_value = find_DICT_KEY_LIST(TUITION, CHG3AY3)
        locate_label, locate_value = find_DICT_KEY_LIST(LOCATE, LOCALE)
        locate_value = LOCATE_V
        insize_label, insize_value = find_DICT_KEY(INSIZE, INSTSIZE)
        insize_value = INSTSIZE_V

        admiss_v = (ADMSSN/APPLCN)*100
        admiss_label, admiss_value = find_DICT_KEY_LIST(ADMISSION, int(admiss_v))
        admiss_value = round((admiss_v), 2)

        guaratedrate_label, guaratedrate_value = find_DICT_KEY(GUARATEDRATE, L4GR150)

        stutype_v = int((EFTOTLT_UNGR/EFTOTLT_GR)*100)
        stutype_label, stutype_value = find_DICT_COMPARE(STUDENTTYPE, stutype_v)
        stutype_value = round((EFTOTLT_UNGR / (EFTOTLT_UNGR + EFTOTLT_GR)), 3) * 100

        gender_v = int((EFTOTLW/EFTOTLM)*100)
        gender_label, gender_value = find_DICT_COMPARE(GENDER, gender_v)
        gender_value = round((EFTOTLW / (EFTOTLW + EFTOTLM)), 3) * 100

        result = {'introduction': [
            {"id":1, "label":stufacr_label, "value":stufacr_value},
            {"id":2, "label":tuition_label, "value":tuition_value},
            {"id":3, "label":locate_label, "value":locate_value},
            {"id":4, "label":admiss_label, "value":admiss_value},
            {"id":5, "label":insize_label, "value":insize_value},
            {"id":6, "label":stutype_label, "value":stutype_value},
            {"id":7, "label":gender_label, "value":gender_value},
            {"id":8, "label":guaratedrate_label, "value":guaratedrate_value},
        ]}

        #print(result)
        self.write(result)
예제 #8
0
    def slug2id(self, slug):
        if slug in self._SLUG_POOL:
            cid = self._SLUG_POOL[slug]
        else:
            try:
                cid = client.submit('UnivSlugTask', {'SLUG': slug})['UNITID']
            except KeyError as ke:
                return self._UNMAPPED_ID

            self._SLUG_POOL[slug] = cid

        return cid
예제 #9
0
    def slug2id(self, slug):
        if slug in self._SLUG_POOL:
            cid = self._SLUG_POOL[slug]
        else:
            try:
                cid = client.submit('UnivSlugTask', {'SLUG': slug})['UNITID']
            except KeyError as ke:
                return self._UNMAPPED_ID

            self._SLUG_POOL[slug] = cid

        return cid
예제 #10
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        tui_on_campus = client.submit('UnivTuitionOnCampusTask',
                                      {'UNITID': cid})
        tui_off_campus = client.submit('UnivTuitionOffCampusTask',
                                       {'UNITID': cid})
        tui_compare = client.submit('UnivTuitionCompareTask', {'UNITID': cid})

        tui_on_campus_list = [
            tui_on_campus['CHG3AY3'], tui_on_campus['CHG4AY3'],
            tui_on_campus['CHG5AY3'], tui_on_campus['CHG6AY3']
        ]
        tui_off_campus_list = [
            tui_off_campus['CHG3AY3'], tui_off_campus['CHG4AY3'],
            tui_off_campus['CHG7AY3'], tui_off_campus['CHG8AY3']
        ]

        tui_campus_label = ['学费', '书杂费', '住宿伙食', '其他费用']
        tui_on_campus_list = [x for x in tui_on_campus_list if x is not None]
        tui_off_campus_list = [x for x in tui_off_campus_list if x is not None]
        tui_on_campus_label = tui_campus_label[:len(tui_on_campus_list)]
        tui_off_campus_label = tui_campus_label[:len(tui_off_campus_list)]

        result = dict(
            category=["住校学费", "校外学费", "学费对比"],
            details=[[tui_on_campus_label, tui_on_campus_list],
                     [tui_off_campus_label, tui_off_campus_list]],
            comparetui=[['本校', '本州', '该地区', '全美'],
                        [
                            tui_on_campus['CHG3AY3'], tui_on_campus['CHG4AY3'],
                            tui_on_campus['CHG5AY3'], tui_on_campus['CHG6AY3']
                        ]],
        )

        self.write(result)
예제 #11
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        urls = client.submit('UnivAdmiUrlTask', dict(UNITID=cid))
        enrollment = client.submit('UnivEnrolAdmisTask', dict(UNITID=cid))
        requirement = client.submit('UnivAdmiReqTask', dict(UNITID=cid))
        apply_fee = client.submit('UnivAdmiPayTask', dict(UNITID=cid))

        result = {'apply_num': enrollment['APPLCN'],
                  'admiss_num': enrollment['ADMSSN'],
                  'enroll_num': enrollment['ENRLT'],
                  'apply_url': urls['APPLURL'],
                  'requi_url': urls['ADMINURL'],
                  'site_url': urls['WEBADDR'],
                  'apply_fee_under': apply_fee['APPLFEEU'],
                  'apply_fee_gradu': apply_fee['APPLFEEG'],
                  'requirement': AdmiRequreFormat(requirement),
                  }

        self.write(result)
예제 #12
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        urls = client.submit('UnivAdmiUrlTask', dict(UNITID=cid))
        enrollment = client.submit('UnivEnrolAdmisTask', dict(UNITID=cid))
        requirement = client.submit('UnivAdmiReqTask', dict(UNITID=cid))
        apply_fee = client.submit('UnivAdmiPayTask', dict(UNITID=cid))

        result = {
            'apply_num': enrollment['APPLCN'],
            'admiss_num': enrollment['ADMSSN'],
            'enroll_num': enrollment['ENRLT'],
            'apply_url': urls['APPLURL'],
            'requi_url': urls['ADMINURL'],
            'site_url': urls['WEBADDR'],
            'apply_fee_under': apply_fee['APPLFEEU'],
            'apply_fee_gradu': apply_fee['APPLFEEG'],
            'requirement': AdmiRequreFormat(requirement),
        }

        self.write(result)
예제 #13
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        rank_type = client.submit('UnivRankTypeTask', dict(UNITID=cid))['rows']
        result = dict(rank=[[],[dict(rank=[[],[]], top=[[],[]]) for t in rank_type]])
        for i, t in enumerate(rank_type):
            result['rank'][0].append(t['RANKTYPE'])
            ranks = client.submit('UnivRankAllTask', dict(UNITID=cid, RANKTYPE=t['RANKTYPE']))['rows']
            tmp = result['rank'][1][i]
            max_year = 0
            for rank in ranks:
                tmp['rank'][0].append(rank['YEAR'])
                tmp['rank'][1].append(rank['RANK'])
                max_year = rank['YEAR']

            sub_ranks = client.submit('UnivSubRankTask', dict(UNITID=cid, RANKTYPE=t['RANKTYPE'], YEAR=max_year))['rows']
            for srank in sub_ranks:
                tmp['top'][0].append(srank['FIELDTYPE'])
                tmp['top'][1].append(srank['RANK'])

        self.write(result)
예제 #14
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        cats = client.submit('StatiCategoryL3', dict(ID='student'))['rows']
        result = dict(dict=dict(),
                      category=[],
                      detail=[[[], [], []] for cat in cats])
        ids = []
        for i, cat in enumerate(cats):
            ids.append(cat['id'])
            result['category'].append(cat['id'])
            detail = result['detail'][i]
            univs = client.submit(
                'StatiUnivTask',
                dict(UNITID=cid, ID=cat['id'], FIELDS=['AVERAGE']))['rows']
            for univ in univs:
                ids.append(univ['TYPEID1'])
                detail[0].append(univ['TYPEID1'])
                detail[1].append(univ['AVERAGE'])

            states = client.submit(
                'StatiStateTask',
                dict(UNITID=cid, ID=cat['id'], FIELDS=['AVERAGE']))['rows']
            for states in states:
                detail[2].append(states['AVERAGE'])

        kvs = client.submit('StatiDictValue', dict(IDS=ids))['rows']

        #print(kvs)
        for kv in kvs:
            result['dict'][kv['KEY']] = kv['VALUE']

        self.write(result)
예제 #15
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        names = client.submit('UnivNameTask',
                              dict(UNITID=cid, LANG=['CN', 'EN']))['rows']

        for n in names:
            if n['LANG'] == 'EN':
                name_local = n['NAME']
            elif n['LANG'] == 'CN':
                name = n['NAME']

        admis = client.submit('UnivEnrolAdmisTask', dict(UNITID=cid))

        acceptance_rate = admis['ADMSSN'] / admis['APPLCN']
        student_amount = admis['EFTOTLT_TOTAL']

        tution = client.submit('UnivTuitionOnCampusTask', dict(UNITID=cid))
        tution_amount_local = tution['CHG3AY3']

        mservice = self.application.settings["media_service"]
        result = dict(
            cover=self.static_url(mservice.college_cover_src(slug)),
            logo=self.static_url(mservice.college_logo_src(slug)),
            name=name,
            name_local=name_local,
            acceptance_rate=acceptance_rate,
            student_amount=student_amount,
            tution_amount_local=tution_amount_local,
        )

        #print(result)
        self.write(result)
예제 #16
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        local = client.submit('UnivLocateTask', dict(UNITID=cid))
        # EXAMPLE:
        # {'coordinate': [123, 213], 'address': 'Massachusetts Hall Cambridge, Massachusetts 02138', 'telephone': '(617) 495-1000'}
        result = dict(LON=local['LONGITUD'],
                    LAT= local['LATITUDE'],
                    address=local['ADDR'] + ', ' +
                    local['CITY'] + ', ' + local['STABBR'],
                    telephone=local['GENTELE'],
                    )

        self.write(result)
예제 #17
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        local = client.submit('UnivLocateTask', dict(UNITID=cid))
        # EXAMPLE:
        # {'coordinate': [123, 213], 'address': 'Massachusetts Hall Cambridge, Massachusetts 02138', 'telephone': '(617) 495-1000'}
        result = dict(
            LON=local['LONGITUD'],
            LAT=local['LATITUDE'],
            address=local['ADDR'] + ', ' + local['CITY'] + ', ' +
            local['STABBR'],
            telephone=local['GENTELE'],
        )

        self.write(result)
예제 #18
0
    def get(self, slug):
        cid = self.slug2id(slug)

        if cid == self._UNMAPPED_ID:
            self.write('error slug')

        intro_infos = client.submit('UnivIntroTask', dict(UNITID=cid))

        EFTOTLT_GR = intro_infos['EFTOTLT_GR']
        EFTOTLT_UNGR = intro_infos['EFTOTLT_UNGR']
        L4GR150 = intro_infos['L4GR150']
        EFTOTLW = intro_infos['EFTOTLW']
        EFTOTLM = intro_infos['EFTOTLM']
        APPLCN = intro_infos['APPLCN']
        ADMSSN = intro_infos['ADMSSN']
        INSTSIZE = intro_infos['INSTSIZE']
        CHG3AY3 = intro_infos['CHG3AY3']
        LOCALE = intro_infos['LOCALE']
        STUFACR = intro_infos['STUFACR']
        LOCATE_V = intro_infos['LOCALE_V']
        INSTSIZE_V = intro_infos['INSTSIZE_V']

        stufacr_label, stufacr_value = find_DICT_KEY_LIST(
            STUDENTFACULTY, STUFACR)
        tuition_label, tuition_value = find_DICT_KEY_LIST(TUITION, CHG3AY3)
        locate_label, locate_value = find_DICT_KEY_LIST(LOCATE, LOCALE)
        locate_value = LOCATE_V
        insize_label, insize_value = find_DICT_KEY(INSIZE, INSTSIZE)
        insize_value = INSTSIZE_V

        admiss_v = (ADMSSN / APPLCN) * 100
        admiss_label, admiss_value = find_DICT_KEY_LIST(
            ADMISSION, int(admiss_v))
        admiss_value = round((admiss_v), 2)

        guaratedrate_label, guaratedrate_value = find_DICT_KEY(
            GUARATEDRATE, L4GR150)

        stutype_v = int((EFTOTLT_UNGR / EFTOTLT_GR) * 100)
        stutype_label, stutype_value = find_DICT_COMPARE(
            STUDENTTYPE, stutype_v)
        stutype_value = round(
            (EFTOTLT_UNGR / (EFTOTLT_UNGR + EFTOTLT_GR)), 3) * 100

        gender_v = int((EFTOTLW / EFTOTLM) * 100)
        gender_label, gender_value = find_DICT_COMPARE(GENDER, gender_v)
        gender_value = round((EFTOTLW / (EFTOTLW + EFTOTLM)), 3) * 100

        result = {
            'introduction': [
                {
                    "id": 1,
                    "label": stufacr_label,
                    "value": stufacr_value
                },
                {
                    "id": 2,
                    "label": tuition_label,
                    "value": tuition_value
                },
                {
                    "id": 3,
                    "label": locate_label,
                    "value": locate_value
                },
                {
                    "id": 4,
                    "label": admiss_label,
                    "value": admiss_value
                },
                {
                    "id": 5,
                    "label": insize_label,
                    "value": insize_value
                },
                {
                    "id": 6,
                    "label": stutype_label,
                    "value": stutype_value
                },
                {
                    "id": 7,
                    "label": gender_label,
                    "value": gender_value
                },
                {
                    "id": 8,
                    "label": guaratedrate_label,
                    "value": guaratedrate_value
                },
            ]
        }

        #print(result)
        self.write(result)