示例#1
0
def getGrades(user, jwxt_user):
    gradesStr = jwxt_user.getScore()
    pattern = pattern = re.compile(r'\{"[^\}]*"\}')
    results = pattern.finditer(gradesStr)
    for item in results:
        grade = item.group()
        try:
            lessonIdPattern = re.compile(r'(?<="kch":")([^"]+?)(?=")')
            lessonId = lessonIdPattern.search(grade).group()
            teacherPattern = re.compile(r'(?<="jsxm":")([^"]+?)(?=")')
            try:
                teacher = teacherPattern.search(grade).group()
            except:
                teacher = ''
            lesson = Lesson.objects.get(lessonId=lessonId, teacher=teacher)
        except Lesson.DoesNotExist:
            schoolNumber = lessonId[:5]
            try:
                schoolObj = School.objects.get(number=schoolNumber)
            except:
                schoolObj = School.objects.get(number='69000')
            titlePattern = re.compile(r'(?<="kcmc":")([^"]+?)(?=")')
            title = titlePattern.search(grade).group()
            classHour = 'None'
            creditPattern = re.compile(r'(?<="xf":")([^"]+?)(?=")')
            try:
                credit = creditPattern.search(grade).group()
            except:
                credit = '0'
            campus = ''
            teachType = '01'
            typePattern = re.compile(r'(?<="kclb":")([^"]+?)(?=")')
            type = typePattern.search(grade).group()
            lesson = Lesson(school=schoolObj,
                        lessonId=lessonId,
                        title=title,
                        description='',
                        classHour=classHour,
                        credit=credit,
                        campus=campus,
                        teacher=teacher[:128],
                        teachType=teachType,
                        type=type
             )
            lesson.save()
        yearPattern = re.compile(r'(?<="xnd":")([^"]+?)(?=")')
        try:
            year = yearPattern.search(grade).group()
        except:
            year = 'unknow'
        scorePattern = re.compile(r'(?<="zzcj":")([^"]+?)(?=")')
        try:
            score = int(scorePattern.search(grade).group())
        except:
            continue
        rankPattern = re.compile(r'(?<="jxbpm":")([^"]+?)(?=")')
        try:
            rank = rankPattern.search(grade).group()
        except:
            ranking = int
            total = int
        else:
            rank_list = map(int, re.findall(r'\d+', rank))
            try:
                ranking = rank_list[0]
                total = rank_list[1]
            except:
                ranking = int
                total = int
        termPattern = re.compile(r'(?<="xq":")([^"]+?)(?=")')
        try:
            term = termPattern.search(grade).group()
        except:
            term = '4'
        try:
            gradeObj = Grade.objects.get(user=user, lesson=lesson)
        except Grade.DoesNotExist:
            gradeObj = Grade(
                    user=user,
                    lesson=lesson,
                    year=year,
                    term=term,
                    score=score,
                    ranking=ranking,
                    total=total
            )
            gradeObj.save()
            lesson.add_grade_number()
            lesson.save()