Exemplo n.º 1
0
 def POST(self):
     web.header("Access-Control-Allow-Origin", "*")
     params = web.input()
     information = model.Information_model()
     information_data = information.query('SELECT * FROM information WHERE \
                 class_cl_id=%s and exam_ex_id=%s' % (params.class_cl_id, params.ex_id))
     information_data = [model.Information_model(**item) for item in information_data]
     exam = model.Exam_model.getByPK(params.ex_id)
     if exam.ex_type=="0":
         for information in information_data:
             information.in_endtime = datetime.datetime.now()
             information.in_state = '2'
             information.in_temp_ip = None
             db.update('exam_question', where="information_in_id = %s" % (information.in_id), eq_get_score='-2', )
             information.update()
         response = util.Response(status=util.Status.__success__, )
         return util.objtojson(response)
     else:
         if exam.ex_auto =="1":
             for information in information_data:
                 information.in_endtime = datetime.datetime.now()
                 if information.in_state=='1':
                     information.in_state = '2'
                     information.in_temp_ip = None
                     db.update('exam_question', where="information_in_id = %s" % (information.in_id),
                           eq_get_score='-2', )
                     information.update()
                     thread.start_new(util.GetScore, (1,information.in_id))
         response = util.Response(status=util.Status.__success__, )
         return util.objtojson(response)
Exemplo n.º 2
0
    def POST(self):
        web.header("Access-Control-Allow-Origin", "*")
        must_params = ('st_id', 'st_name', 'cl_id')
        params = web.input()

        if util.paramsok(must_params, params) == Status.__params_not_ok__:
            response = util.Response(Status.__params_not_ok__, message='参数错误!')
            return util.objtojson(response)
        st_has_cl = Student_has_class_model(student_st_id=params.st_id,
                                            class_cl_id=params.cl_id)
        # del  params.cl_id
        s = Student_model(st_id=params.st_id)
        try:
            st_exist = s.getByArgs(**s)
            if st_exist:
                if st_has_cl.insert():
                    information = model.Information_model.query('select \
                                         distinct(exam_ex_id),sg_id from information where \
                                         class_cl_id = %s' % (params.cl_id))
                    if information != None:
                        information = [
                            model.Information_model(**item)
                            for item in information
                        ]
                        for item in information:
                            item.class_cl_id = params.cl_id
                            item.student_st_id = params.st_id
                            item.insert()
                    else:
                        print "none"
                    response = util.Response(Status.__success__,
                                             message="该学生已添加进课程班级")
                    return util.objtojson(response)
                response = util.Response(Status.__success__,
                                         message="该学生已存在于课程班级,不能重复添加!")
                return util.objtojson(response)
            else:
                s = Student_model(**params)
                s.insert()
                st_has_cl.insert()
                information = model.Information_model.query('select \
                    distinct(exam_ex_id),sg_id from information where \
                    class_cl_id = %s' % (params.cl_id))
                if information != None:
                    information = [
                        model.Information_model(**item) for item in information
                    ]
                    for item in information:
                        item.class_cl_id = params.cl_id
                        item.student_st_id = params.st_id
                        item.insert()
                else:
                    print "none"
                response = util.Response(Status.__success__,
                                         message="该学生已添加进课程班级!")
                return util.objtojson(response)
        except Exception as e:
            response = util.Response(Status.__error__, message="error")
            return util.objtojson(response)
Exemplo n.º 3
0
 def POST(self):
     web.header("Access-Control-Allow-Origin", "*")
     information = model.Information_model()
     session = web.ctx.session
     information_data = information.query(
         'SELECT * FROM information WHERE \
                 student_st_id=%s and exam_ex_id=%s' %
         (session.student_id, session.ex_id))
     information = model.Information_model(**information_data[0])
     information.in_endtime = datetime.datetime.now()
     information.in_state = '2'
     information.in_temp_ip = None
     exam = model.Exam_model.getByPK(session.ex_id)
     if exam.ex_type == "0":
         util.SaveFillb(information.in_id)
         db.update(
             'exam_question',
             where="information_in_id = %s" % (information.in_id),
             eq_get_score='-2',
         )
         # information.in_score = util.upInformationScore(1000,information.in_id)
         # while 1:
         #     exam_question = model.Exam_question_model.getByArgs(information_in_id=information.in_id)
         #     information.in_score = 0
         #     flag = 0
         #     for question in exam_question:
         #         if question.eq_get_score >= 0:
         #             information.in_score += question.eq_get_score
         #         else:
         #             flag = 1
         #             break
         #     if flag == 0:
         #         break
         #
         information.in_state = '0'
         information.update()
         response = util.Response(status=util.Status.__params_ok__,
                                  message=information.in_score)
         return util.objtojson(response)
     else:
         if exam.ex_auto == "1":
             util.SaveFillb(information.in_id)
             db.update(
                 'exam_question',
                 where="information_in_id = %s" % (information.in_id),
                 eq_get_score='-2',
             )
             thread.start_new(util.GetScore, (1, information.in_id))
         information.update()
         response = util.Response(status=util.Status.__success__, )
         return util.objtojson(response)
Exemplo n.º 4
0
 def POST(self):
     params = web.input()
     web.header("Access-Control-Allow-Origin", "*")
     exam = model.Exam_model.getByPK(params.ex_id)
     exam.ex_state = '1'
     delta = exam.ex_time_end - exam.ex_time_start
     exam.ex_time_start = datetime.datetime.now()
     exam.ex_time_end = exam.ex_time_start + delta
     exam.update()
     information_data = model.Information_model.query(
         'SELECT * FROM information WHERE \
                                 exam_ex_id=%s' % (params.ex_id))
     information_data = [
         model.Information_model(**items) for items in information_data
     ]
     for information in information_data:
         information.in_state = '0'
         information.inscore = -1
         information.in_ip = None
         information.update()
         db.delete('exam_question',
                   where="information_in_id = $information_in_id",
                   vars={
                       'information_in_id': information.in_id,
                   })
     response = util.Response(status=util.Status.__success__, )
     return util.objtojson(response)
Exemplo n.º 5
0
 def POST(self):
     web.header("Access-Control-Allow-Origin", "*")
     params = web.input()
     exam = model.Exam_model()
     must_params = exam.__notnull__
     if (util.paramsok(must_params, params) == 2):
         response = util.Response(status=util.Status.__params_not_ok__)
         return util.objtojson(response)
     else:
         exam = model.Exam_model(**params)
         if exam.insert():
             result = exam.query("select max(ex_id) from exam")
             lastExamId = int(result[0]['max(ex_id)'])
             # 获取教务班学生id
             stuHasClass = model.Student_has_class_model()
             classId = params['class_cl_id'].encode('utf-8')
             classId = classId.split(',')
             for k in range(1, len(classId) - 1):
                 listStuid = stuHasClass.getByArgs(class_cl_id=classId[k])
                 for stuID in listStuid:
                     informationArgs = dict(
                         student_st_id=stuID.student_st_id,
                         exam_ex_id=lastExamId,
                         class_cl_id=classId[k],
                         sg_id=exam.strategy_sg_id)
                     information = model.Information_model(
                         **informationArgs)
                     information.insert()
             response = util.Response(status=util.Status.__success__)
             return util.objtojson(response)
         else:
             response = util.Response(status=util.Status.__error__)
             return util.objtojson(response)
Exemplo n.º 6
0
    def POST(self):
        web.header("Access-Control-Allow-Origin", "*")
        params = web.input()
        exam = model.Exam_model()
        must_params = exam.__notnull__
        if (util.paramsok(must_params, params) == 2):
            response = util.Response(status=util.Status.__params_not_ok__)
            return util.objtojson(response)
        else:
            exam = model.Exam_model(**params)
            if exam.update():
                # 获取教务班学生id
                stuHasClass = model.Student_has_class_model()
                classId = params['add_class_cl_id'].encode('utf-8')
                classId = classId.split(',')
                print 'add_class_cl_id'
                print classId
                for k in range(1, len(classId) - 1):
                    print 1234567
                    print classId[k]
                    listStuid = stuHasClass.getByArgs(class_cl_id=classId[k])
                    for stuID in listStuid:
                        informationArgs = dict(
                            student_st_id=stuID.student_st_id,
                            exam_ex_id=exam.ex_id,
                            class_cl_id=classId[k],
                            sg_id=exam.strategy_sg_id)
                        information = model.Information_model(
                            **informationArgs)
                        information.insert()

                delete_classId = params['delete_class_cl_id'].encode('utf-8')
                delete_classId = delete_classId.split(',')
                print 'delete_class_cl_id'
                print delete_classId
                for k in range(1, len(delete_classId) - 1):
                    listStuid = stuHasClass.getByArgs(
                        class_cl_id=delete_classId[k])
                    for stuID in listStuid:
                        # informationArgs = dict(student_st_id=stuID.student_st_id, exam_ex_id=exam.ex_id,
                        #                        class_cl_id=delete_classId[k])
                        # information = model.Information_model()
                        # information_id = information.getByArgs(informationArgs)
                        # information.in_id = information_id[0]['in_id']
                        # information.delete()
                        db.delete('information',
                                  where="student_st_id = $student_st_id \
                        and exam_ex_id = $exam_ex_id",
                                  vars={
                                      'student_st_id': stuID.student_st_id,
                                      'exam_ex_id': exam.ex_id
                                  })

                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            else:
                response = util.Response(status=util.Status.__error__)
                return util.objtojson(response)
Exemplo n.º 7
0
 def POST(self):
     web.header("Access-Control-Allow-Origin", "*")
     mydata = web.input()
     cl = model.Class_model()
     exam = model.Exam_model()
     information = model.Information_model()
     student = model.Student_model()
     information_data = orm.db.query(
         'select * from information where exam_ex_id = %s and class_cl_id = %s'
         % (mydata.ex_id, mydata.cl_id))
     # information_data = orm.db.query('select * from information where exam_ex_id = %s'%(mydata.ex_id))
     information_data = [
         model.Information_model(**item) for item in information_data
     ]
     student_data = []
     examquestion_data = []
     for k in information_data:
         result = student.getByArgs(st_id=k.student_st_id)
         student_data.append(result)
         k['in_state'] = util.in_state[int(k.in_state)]
         if k['in_score'] == -1:
             k['in_score'] = u'未出分'
         result = model.Exam_question_model.getByArgs(
             information_in_id=k.in_id)
         for question in result:
             if question.eq_get_score < 0:
                 question.eq_get_score = u'未出分'
         examquestion_data.append(result)
     data = []
     data.append(information_data)
     data.append(student_data)
     data.append(examquestion_data)
     page = util.Page(data=data,
                      totalRow=len(student_data),
                      currentPage=int(mydata.currentPage),
                      pageSize=10,
                      status=util.Status.__success__,
                      message="未知")
     response = util.Response(status=util.Status.__success__, body=page)
     return util.objtojson(response)
Exemplo n.º 8
0
 def POST(self):
     web.header("Access-Control-Allow-Origin", "*")
     # 接收参数
     params = web.input()
     params.setdefault("in_state", '1')
     params.setdefault("in_ip", web.ctx.ip)
     information = model.Information_model(**params)
     if information.update():
         response = util.Response(status=util.Status.__error__)
         return util.objtojson(response)
     else:
         response = util.Response(status=util.Status.__success__)
         return util.objtojson(response)
Exemplo n.º 9
0
 def POST(self):
     web.header("Access-Control-Allow-Origin", "*")
     session = web.ctx.session
     information_data = model.Information_model.query(
         'SELECT * FROM information WHERE \
                         student_st_id=%s and exam_ex_id=%s' %
         (session.student_id, session.ex_id))
     information = model.Information_model(**information_data[0])
     now = datetime.datetime.now()
     exam = model.Exam_model.getByArgs(ex_id=session.ex_id)
     delta = datetime.timedelta(minutes=exam[0].ex_duration)
     end_time = now + delta
     information.in_endtime = end_time.strftime('%Y-%m-%d %H:%M:%S')
     information.in_state = '1'
     information.update()
     response = util.Response(status=util.Status.__success__, )
     return util.objtojson(response)
Exemplo n.º 10
0
def GetScore(delay, in_id):
    while 1:
        time.sleep(delay)
        exam_question = model.Exam_question_model.getByArgs(information_in_id=in_id)
        score = 0
        flag = 0
        for question in exam_question:
            if question.eq_get_score >= 0:
                score += question.eq_get_score
            else:
                flag = 1
                break
        if flag == 0:
            information = model.Information_model()
            information.in_id = in_id
            information.in_score = score
            information.update()
            break
Exemplo n.º 11
0
def word(student_st_id, exam_ex_id, filepath):
    # 打开文档
    document = Document()
    # 加入不同等级的标题
    exam = model.Exam_model.getByPK(exam_ex_id)
    document.add_heading(u'\t\t' + exam['ex_name'], 0)

    information = model.Information_model()
    information_data = information.query('SELECT * FROM information WHERE \
                student_st_id=%s and exam_ex_id=%s' %
                                         (student_st_id, exam_ex_id))
    information = model.Information_model(**information_data[0])
    exam_question = model.Exam_question_model.getByArgs(
        information_in_id=information.in_id)
    choice_question = []
    judge_question = []
    # filla是读程序写结果
    filla_question = []
    fillb_question = []
    coding_question = []
    for item in exam_question:
        if item.eq_qt_type == 'choice':
            question_data = model.Question_model.getByPK(item.qt_id)
            choice_data = model.Choice_model.getByPK(item.qt_id)
            item = dict(item, **choice_data)
            item = dict(item, **question_data)
            choice_question.append(item)
        elif item.eq_qt_type == 'judge':
            question_data = model.Question_model.getByPK(item.qt_id)
            judge_data = model.Judge_model.getByPK(item.qt_id)
            item = dict(item, **judge_data)
            item = dict(item, **question_data)
            judge_question.append(item)
        elif item.eq_qt_type == 'filla':
            question_data = model.Question_model.getByPK(item.qt_id)
            filla_data = model.Filla_model.getByPK(item.qt_id)
            item = dict(item, **filla_data)
            item = dict(item, **question_data)
            filla_question.append(item)
        elif item.eq_qt_type == 'coding':
            question_data = model.Question_model.getByPK(item.qt_id)
            coding_data = model.Coding_model.getByPK(item.qt_id)
            item = dict(item, **coding_data)
            item = dict(item, **question_data)
            coding_question.append(item)
    fillb_qt = model.Exam_question_model.query(
        'select distinct(qt_id),\
                                                            eq_pre_score from exam_question where information_in_id = %s \
                                                            and eq_qt_type = %s'
        % (information.in_id, "'" + 'fillb' + "'"))
    for item in fillb_qt:
        question_data = model.Question_model.getByPK(item['qt_id'])
        fillb_data = model.Fillb_model.getByPK(item['qt_id'])

        eq_id_data = model.Exam_question_model.query('select eq_id,eq_answer ,eq_get_score from \
                                                                        exam_question where qt_id = %s and information_in_id = %s' \
                                                     % (item['qt_id'], information.in_id))
        eq_id_data = [
            model.Exam_question_model(**items) for items in eq_id_data
        ]
        i = 1
        fillb_coding = fillb_data.fb_pre_coding.split('&&&')
        print len(fillb_coding)
        for k in eq_id_data:
            j = 2 * i - 1
            fillb_coding[j] = u'空 ' + str(i)
            i += 1
        fillb_data.fb_pre_coding = ''.join(fillb_coding)

        item = dict(item, **fillb_data)
        item = dict(item, **question_data)
        fillb = []
        fillb.append(item)
        fillb.append(eq_id_data)
        # print fillb
        fillb_question.append(fillb)

    student = model.Student_model.getByPK(student_st_id)
    # 添加文本
    paragraph = document.add_paragraph()
    paragraph.add_run(u'学号:\t')
    paragraph.add_run(u'%s' % student['st_id'])
    paragraph.add_run(u'\t姓名:    ')
    paragraph.add_run(student['st_name'])
    paragraph.add_run(u'\t班级:    ')
    paragraph.add_run(student['st_specialty'])
    paragraph.add_run(u'\t得分:    ')
    if information['in_score'] < 0:
        # information['in_score']=u'未出分'
        paragraph.add_run(u'未出分')
    else:
        paragraph.add_run(str(information['in_score']))
    # #设置字号
    # run = paragraph.add_run(u'设置字号、')
    # run.font.size = Pt(24)
    #
    # #设置字体
    # run = paragraph.add_run('Set Font,')
    # run.font.name = 'Consolas'

    # 设置中文字体
    # run = paragraph.add_run('学号: '+student['st_id'])
    # run.font.name=u'宋体'
    # r = run._element
    # r.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

    # #增加无序列表
    # document.add_paragraph(
    #     u'无序列表元素1', style='List Bullet'
    # )
    # document.add_paragraph(
    #     u'无序列表元素2', style='List Bullet'
    # )
    document.add_heading(u'选择题', 1)
    for item in choice_question:
        # print item
        if item['eq_get_score'] < 0:
            # item['eq_get_score'] = "未出分"
            document.add_paragraph(item['qt_stem'] + u'\n 学生答案: ' +
                                   item['eq_answer'] + u'\t 得分: ' + u'未出分',
                                   style='List Number')
        else:
            document.add_paragraph(item['qt_stem'] + u'\n 学生答案: ' +
                                   item['eq_answer'] + u'\t 得分: ' +
                                   str(item['eq_get_score']),
                                   style='List Number')

        document.add_paragraph(u'A. ' + item['cc_a'], style='List Bullet')
        document.add_paragraph(u'B. ' + item['cc_b'], style='List Bullet')
        document.add_paragraph(u'C. ' + item['cc_c'], style='List Bullet')
        document.add_paragraph(u'D. ' + item['cc_d'], style='List Bullet')

    document.add_heading(u'判断题', 1)
    for item in judge_question:
        # print item
        if item['eq_get_score'] < 0:
            # item['eq_get_score'] = "未出分"
            document.add_paragraph(item['qt_stem'] + u'\n 学生答案: ' +
                                   item['eq_answer'] + u'\t 得分: ' + u'未出分',
                                   style='List Number')
        else:
            document.add_paragraph(item['qt_stem'] + u'\n 学生答案: ' +
                                   item['eq_answer'] + u'\t 得分: ' +
                                   str(item['eq_get_score']),
                                   style='List Number')

    document.add_heading(u'读程序写结果', 1)
    for item in filla_question:
        # print item
        if item['eq_get_score'] < 0:
            # item['eq_get_score'] = "未出分"
            document.add_paragraph(item['qt_stem'] + u'\n 学生答案: ' +
                                   item['eq_answer'] + u'\t 得分: ' + u'未出分',
                                   style='List Number')
        else:
            document.add_paragraph(item['qt_stem'] + u'\n 学生答案: ' +
                                   item['eq_answer'] + u'\t 得分: ' +
                                   str(item['eq_get_score']),
                                   style='List Number')

    document.add_heading(u'程序填空', 1)
    for item in fillb_question:
        print item
        answer = ''
        i = 1
        for eq in item[1]:
            if eq['eq_get_score'] < 0:
                # eq['eq_get_score'] = u"未出分"
                answer += u'空' + str(
                    i) + '\t' + eq.eq_answer + u'\t 得分: ' + u"未出分" + '\n'
            else:
                answer += u'空' + str(
                    i) + '\t' + eq.eq_answer + u'\t 得分: ' + str(
                        eq['eq_get_score']) + '\n'
            i += 1
        document.add_paragraph(item[0]['qt_stem'] + u'\n' +
                               item[0]['fb_pre_coding'] + u'\n' + answer,
                               style='List Number')

    document.add_heading(u'编程题', 1)
    for item in coding_question:
        # print item
        if item['eq_get_score'] < 0:
            # item['eq_get_score'] = "未出分"
            document.add_paragraph(item['qt_stem'] + u'\n 学生答案: ' +
                                   item['eq_answer'] + u'\t 得分: ' + u'未出分',
                                   style='List Number')
        else:
            document.add_paragraph(item['qt_stem'] + u'\n 学生答案: ' +
                                   item['eq_answer'] + u'\t 得分: ' +
                                   str(item['eq_get_score']),
                                   style='List Number')

    # #增加有序列表
    # document.add_paragraph(
    #     u'有序列表元素1', style='List Number'
    # )

    # 增加分页
    # document.add_page_break()

    # 保存文件
    # print "savepage"
    # document.save(u'../examTransplant2.2/source/exampage/2014.docx')
    document.save(str(filepath))
Exemplo n.º 12
0
#coding=utf-8

from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
from model import model
#打开文档
document = Document()
#加入不同等级的标题
exam=model.Exam_model.getByPK(1)
document.add_heading(u'\t\t'+exam['ex_name'],0)

information = model.Information_model()
information_data = information.query('SELECT * FROM information WHERE \
            student_st_id=%s and exam_ex_id=%s' % (2014112207, 2))
information = model.Information_model(**information_data[0])
exam_question = model.Exam_question_model.getByArgs(information_in_id=information.in_id)
choice_question = []
judge_question = []
# filla是读程序写结果
filla_question = []
fillb_question = []
coding_question = []
for item in exam_question:
    if item.eq_qt_type == 'choice':
        question_data = model.Question_model.getByPK(item.qt_id)
        choice_data = model.Choice_model.getByPK(item.qt_id)
        item = dict(item, **choice_data)
        item = dict(item, **question_data)
        choice_question.append(item)
Exemplo n.º 13
0
#!/usr/bin/env python
Exemplo n.º 14
0
    def POST(self):
        web.header("Access-Control-Allow-Origin", "*")
        params = web.input()
        information = model.Information_model()
        # 获取策略id
        if 1:
            # args = dict(exam_ex_id = params.ex_id,student_st_id=params.student_id)
            # information_data = information.getByArgs(**args)
            information_data = information.query(
                'SELECT * FROM information WHERE \
                student_st_id=%s and exam_ex_id=%s' %
                (params.student_id, params.ex_id))
            information_data = [
                model.Information_model(**item) for item in information_data
            ]

            # 获取策略项
            # 难度上下限、知识点、题型、数量、题库id-->题目id(多个要大于数量)
            lists = model.Strategy_term_model.getByArgs(
                strategy_sg_id=information_data[0]['sg_id'])
            # 选中的题目
            choice_question = []
            judge_question = []
            # filla是读程序写结果
            filla_question = []
            fillb_question = []
            coding_question = []
            for strategy_term in lists:
                if strategy_term.sm_type == 'choice':
                    result = model.Question_model.query('select * from question where qt_id \
                        in (select question_qt_id from questions_bank_has_question where \
                        questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                        = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                          % \
                                                        (strategy_term.qb_id, "'" + 'choice' + "'",
                                                         strategy_term.sm_knowledge, \
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                    for question in result:
                        qt_id = question.qt_id
                        choice_data = model.Choice_model.getByPK(qt_id)
                        question['score'] = strategy_term.sm_score

                        # 添加exam_question
                        exam_question = model.Exam_question_model()
                        exam_question.information_in_id = information_data[0][
                            'in_id']
                        exam_question['qt_id'] = qt_id
                        exam_question.eq_qt_type = question.qt_type
                        exam_question.eq_pre_score = strategy_term.sm_score
                        eq_id = exam_question.insertBackid()

                        question['eq_id'] = eq_id[0]['max(eq_id)']
                        question = dict(question, **choice_data)
                        choice_question.append(question)

                if strategy_term.sm_type == 'judge':
                    result = model.Question_model.query('select * from question where qt_id \
                        in (select question_qt_id from questions_bank_has_question where \
                        questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                        = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                          % \
                                                        (strategy_term.qb_id, "'" + 'judge' + "'",
                                                         strategy_term.sm_knowledge, \
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                    for question in result:
                        judge_data = model.Judge_model.getByPK(question.qt_id)
                        question['score'] = strategy_term.sm_score

                        # 添加exam_question
                        exam_question = model.Exam_question_model()
                        exam_question.information_in_id = information_data[0][
                            'in_id']
                        exam_question.qt_id = question.qt_id
                        exam_question.eq_qt_type = question.qt_type
                        exam_question.eq_pre_score = strategy_term.sm_score
                        eq_id = exam_question.insertBackid()

                        question['eq_id'] = eq_id[0]['max(eq_id)']
                        question = dict(question, **judge_data)
                        judge_question.append(question)
                if strategy_term.sm_type == 'filla':
                    result = model.Question_model.query('select * from question where qt_id \
                        in (select question_qt_id from questions_bank_has_question where \
                        questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                        = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                          % \
                                                        (strategy_term.qb_id, "'" + 'filla' + "'",
                                                         strategy_term.sm_knowledge, \
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                    for question in result:
                        filla_data = model.Filla_model.getByPK(question.qt_id)
                        question['score'] = strategy_term.sm_score

                        # 添加exam_question
                        exam_question = model.Exam_question_model()
                        exam_question.information_in_id = information_data[0][
                            'in_id']
                        exam_question.qt_id = question.qt_id
                        exam_question.eq_qt_type = question.qt_type
                        exam_question.eq_pre_score = strategy_term.sm_score
                        eq_id = exam_question.insertBackid()

                        question['eq_id'] = eq_id[0]['max(eq_id)']
                        question = dict(question, **filla_data)
                        filla_question.append(question)
                if strategy_term.sm_type == 'fillb':
                    result = model.Question_model.query('select * from question where qt_id \
                        in (select question_qt_id from questions_bank_has_question where \
                        questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                        = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                          % \
                                                        (strategy_term.qb_id, "'" + 'fillb' + "'",
                                                         strategy_term.sm_knowledge, \
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                    for question in result:
                        fillb_data = model.Fillb_model.getByPK(question.qt_id)
                        question['score'] = strategy_term.sm_score
                        # 统计空数量
                        count = fillb_data.fb_pre_coding.count("&&&")
                        count = count / 2

                        eq_id_data = []
                        while count > 0:
                            count = count - 1
                            # 添加exam_question
                            exam_question = model.Exam_question_model()
                            exam_question.information_in_id = information_data[
                                0]['in_id']
                            exam_question.qt_id = question.qt_id
                            exam_question.eq_qt_type = question.qt_type
                            exam_question.eq_pre_score = strategy_term.sm_score
                            eq_id = exam_question.insertBackid()
                            eq_id_data.append(eq_id[0]['max(eq_id)'])
                            pass
                        question = dict(question, **fillb_data)
                        fillb_data = []
                        fillb_data.append(question)
                        fillb_data.append(eq_id_data)
                        fillb_question.append(fillb_data)
                if strategy_term.sm_type == 'coding':
                    result = model.Question_model.query('select * from question where qt_id \
                        in (select question_qt_id from questions_bank_has_question where \
                        questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                        = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                          % \
                                                        (strategy_term.qb_id, "'" + 'coding' + "'",
                                                         strategy_term.sm_knowledge, \
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                    for question in result:
                        coding_data = model.Coding_model.getByPK(
                            question.qt_id)
                        question['score'] = strategy_term.sm_score

                        # 添加exam_question
                        exam_question = model.Exam_question_model()
                        exam_question.information_in_id = information_data[0][
                            'in_id']
                        exam_question.qt_id = question.qt_id
                        exam_question.eq_qt_type = question.qt_type
                        exam_question.eq_pre_score = strategy_term.sm_score
                        eq_id = exam_question.insertBackid()

                        question['eq_id'] = eq_id[0]['max(eq_id)']
                        question = dict(question, **coding_data)
                        coding_question.append(question)
            question_list = []
            question_list.append(choice_question)
            question_list.append(judge_question)
            question_list.append(filla_question)
            question_list.append(fillb_question)
            question_list.append(coding_question)
            response = util.Response(status=util.Status.__success__,
                                     body=question_list)
            print question_list
            print fillb_question
            return util.objtojson(response)
        else:
            response = util.Response(status=util.Status.__error__)
            return util.objtojson(response)
Exemplo n.º 15
0
    def POST(self):
        web.header("Access-Control-Allow-Origin", "*")
        # 接收参数
        params = web.input()
        session = web.ctx.session
        information_data = model.Information_model.query(
            'select * from information where exam_ex_id=%s\
             and student_st_id = %s' % (params.ex_id, params.student_id))

        if information_data:
            information = model.Information_model(**information_data[0])
            exam = model.Exam_model.getByArgs(ex_id=params.ex_id)
            if params.password != exam[0].ex_login_password:
                response = util.Response(status=util.Status.__error__,
                                         message="password_error")
                return util.objtojson(response)
            if information.in_state == '0':
                information.in_temp_ip = web.ctx.ip
                if information.update():
                    information.in_state = '1'
                    information.in_ip = information.in_temp_ip
                    now = datetime.datetime.now()
                    delta = datetime.timedelta(minutes=exam[0].ex_duration)
                    end_time = now + delta
                    information.in_endtime = end_time.strftime(
                        '%Y-%m-%d %H:%M:%S')
                    print information
                    information.update()
                    # 存储session
                    web.setcookie('system_mangement', '', 120)
                    session.student_id = params.student_id
                    session.ex_id = params.ex_id

                    lists = model.Strategy_term_model.getByArgs(
                        strategy_sg_id=information['sg_id'])
                    for strategy_term in lists:
                        if strategy_term.sm_type == 'choice':
                            if strategy_term.sm_knowledge == 0:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and \
                                           qt_diffculty between %s and %s order by rand() limit %s'                                                                                                    % \
                                           (strategy_term.qb_id, "'" + 'choice' + "'",strategy_term.sm_difficulty_low,
                                            strategy_term.sm_difficulty_high,strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            else:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                                           = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                             % \
                                                                    (strategy_term.qb_id, "'" + 'choice' + "'",
                                                                     strategy_term.sm_knowledge,
                                                                     strategy_term.sm_difficulty_low,
                                                                     strategy_term.sm_difficulty_high,
                                                                     strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            for question in result:
                                qt_id = question.qt_id
                                # 添加exam_questions
                                exam_question = model.Exam_question_model()
                                exam_question.information_in_id = information[
                                    'in_id']
                                exam_question['qt_id'] = qt_id
                                exam_question.eq_qt_type = question.qt_type
                                exam_question.eq_pre_score = strategy_term.sm_score
                                exam_question.eq_answer = "答案"
                                eq_id = exam_question.insertBackid()
                        if strategy_term.sm_type == 'judge':
                            if strategy_term.sm_knowledge == 0:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and \
                                           qt_diffculty between %s and %s order by rand() limit %s'                                                                                                    % \
                                           (strategy_term.qb_id, "'" + 'judge' + "'",strategy_term.sm_difficulty_low,
                                            strategy_term.sm_difficulty_high,strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            else:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                                           = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                             % \
                                                                    (strategy_term.qb_id, "'" + 'judge' + "'",
                                                                     strategy_term.sm_knowledge,
                                                                     strategy_term.sm_difficulty_low,
                                                                     strategy_term.sm_difficulty_high,
                                                                     strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            for question in result:
                                # 添加exam_question
                                exam_question = model.Exam_question_model()
                                exam_question.information_in_id = information[
                                    'in_id']
                                exam_question.qt_id = question.qt_id
                                exam_question.eq_qt_type = question.qt_type
                                exam_question.eq_pre_score = strategy_term.sm_score
                                exam_question.eq_answer = "答案"
                                eq_id = exam_question.insertBackid()
                        if strategy_term.sm_type == 'filla':
                            if strategy_term.sm_knowledge == 0:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and \
                                           qt_diffculty between %s and %s order by rand() limit %s'                                                                                                    % \
                                           (strategy_term.qb_id, "'" + 'filla' + "'",strategy_term.sm_difficulty_low,
                                            strategy_term.sm_difficulty_high,strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            else:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                                           = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                             % \
                                                                    (strategy_term.qb_id, "'" + 'filla' + "'",
                                                                     strategy_term.sm_knowledge,
                                                                     strategy_term.sm_difficulty_low,
                                                                     strategy_term.sm_difficulty_high,
                                                                     strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            for question in result:
                                # 添加exam_question
                                exam_question = model.Exam_question_model()
                                exam_question.information_in_id = information[
                                    'in_id']
                                exam_question.qt_id = question.qt_id
                                exam_question.eq_qt_type = question.qt_type
                                exam_question.eq_pre_score = strategy_term.sm_score
                                exam_question.eq_answer = "答案"
                                eq_id = exam_question.insertBackid()
                        if strategy_term.sm_type == 'fillb':
                            if strategy_term.sm_knowledge == 0:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and \
                                           qt_diffculty between %s and %s order by rand() limit %s'                                                                                                    % \
                                           (strategy_term.qb_id, "'" + 'fillb' + "'",strategy_term.sm_difficulty_low,
                                            strategy_term.sm_difficulty_high,strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            else:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                                           = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                             % \
                                                                    (strategy_term.qb_id, "'" + 'fillb' + "'",
                                                                     strategy_term.sm_knowledge,
                                                                     strategy_term.sm_difficulty_low,
                                                                     strategy_term.sm_difficulty_high,
                                                                     strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            for question in result:
                                fillb_data = model.Fillb_model.getByPK(
                                    question.qt_id)
                                # 统计空数量
                                count = fillb_data.fb_pre_coding.count("&&&")
                                count = count / 2

                                eq_id_data = []
                                while count > 0:
                                    count = count - 1
                                    # 添加exam_question
                                    exam_question = model.Exam_question_model()
                                    exam_question.information_in_id = information[
                                        'in_id']
                                    exam_question.qt_id = question.qt_id
                                    exam_question.eq_qt_type = question.qt_type
                                    exam_question.eq_pre_score = strategy_term.sm_score
                                    exam_question.eq_answer = "答案"
                                    eq_id = exam_question.insertBackid()
                        if strategy_term.sm_type == 'coding':
                            if strategy_term.sm_knowledge == 0:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and \
                                           qt_diffculty between %s and %s order by rand() limit %s'                                                                                                    % \
                                           (strategy_term.qb_id, "'" + 'coding' + "'",strategy_term.sm_difficulty_low,
                                            strategy_term.sm_difficulty_high,strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            else:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                                           = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                             % \
                                                                    (strategy_term.qb_id, "'" + 'coding' + "'",
                                                                     strategy_term.sm_knowledge,
                                                                     strategy_term.sm_difficulty_low,
                                                                     strategy_term.sm_difficulty_high,
                                                                     strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            for question in result:
                                # 添加exam_question
                                exam_question = model.Exam_question_model()
                                exam_question.information_in_id = information[
                                    'in_id']
                                exam_question.qt_id = question.qt_id
                                exam_question.eq_qt_type = question.qt_type
                                exam_question.eq_pre_score = strategy_term.sm_score
                                exam_question.eq_answer = "答案"
                                eq_id = exam_question.insertBackid()
                    response = util.Response(status=util.Status.__success__, )
                    return util.objtojson(response)
                else:
                    print "ip_error"
                    response = util.Response(status=util.Status.__error__,
                                             message="ip_error")
                    return util.objtojson(response)
            elif information.in_state == '1':
                session.student_id = params.student_id
                session.ex_id = params.ex_id
                if datetime.datetime.now() > information.in_endtime:
                    response = util.Response(status=util.Status.__error__,
                                             message="exam is stop")
                    return util.objtojson(response)
                if information.in_ip == None:
                    information.in_ip = web.ctx.ip
                    information.update()
                if information.in_ip != web.ctx.ip:
                    print "ip 不统一"
                    response = util.Response(status=util.Status.__error__,
                                             message="必须使用同一台电脑登录")
                    return util.objtojson(response)
                response = util.Response(status=util.Status.__success__, )
                return util.objtojson(response)
            else:
                response = util.Response(status=util.Status.__error__,
                                         message="已结束考试")
                return util.objtojson(response)
                print "error"
        else:
            response = util.Response(status=util.Status.__error__,
                                     message="您不在该场考试")
            return util.objtojson(response)
            print "该场考试没有该学生"
    def POST(self):
        debug = 0
        if debug == 1:

            class Mydata:
                pass

            mydata = Mydata()
            mydata.ex_id = 4
            mydata.cl_id = 2
        else:
            web.header("Access-Control-Allow-Origin", "*")
            mydata = web.input()
        student = model.Student_model()
        information_data = orm.db.query(
            'select * from information where exam_ex_id = %s and class_cl_id = %s'
            % (mydata.ex_id, mydata.cl_id))
        information_data = [
            model.Information_model(**item) for item in information_data
        ]
        data = []
        for single_information in information_data:
            single_student_data = []
            single_student_data.append(
                student.getByPK(single_information.student_st_id))
            single_student_data.append(single_information)
            single_information['in_state'] = util.in_state[int(
                single_information.in_state)]
            if single_information['in_score'] == -1:
                single_information['in_score'] = u'未出分'
            result = model.Exam_question_model.getByArgs(
                information_in_id=single_information.in_id)
            result_mapping = {
                'choice': [],
                'judge': [],
                'filla': [],
                'fillb': [],
                'coding': []
            }
            for question in result:
                if question.eq_qt_type == 'fillb':
                    if len(result_mapping["fillb"]) == 0 or result_mapping[
                            "fillb"][-1].qt_id != question.qt_id:
                        if question.eq_get_score < 0:
                            question.eq_get_score = u'未出分'
                        result_mapping["fillb"].append(question)
                    elif result_mapping["fillb"][-1].qt_id == question.qt_id:
                        if result_mapping["fillb"][
                                -1].eq_get_score == u'未出分' or question.eq_get_score < 0:
                            result_mapping["fillb"][-1].eq_get_score = u'未出分'
                        else:
                            result_mapping["fillb"][
                                -1].eq_get_score += question.eq_get_score
                else:
                    if question.eq_get_score < 0:
                        question.eq_get_score = u'未出分'
                    result_mapping[str(question.eq_qt_type)].append(question)
            examquestion_data = []
            examquestion_data.extend(result_mapping['choice'])
            examquestion_data.extend(result_mapping['judge'])
            examquestion_data.extend(result_mapping['filla'])
            examquestion_data.extend(result_mapping["fillb"])
            examquestion_data.extend(result_mapping['coding'])
            single_student_data.append(examquestion_data)
            print(single_student_data)
            data.append(single_student_data)
        if debug != 1:
            page = util.Page(data=data,
                             totalRow=len(data),
                             currentPage=int(mydata.currentPage),
                             pageSize=10,
                             status=util.Status.__success__,
                             message="未知")
            response = util.Response(status=util.Status.__success__, body=page)
            #return util.objtojson(response)
            ls = list()
            for i in range(len(response.body.data)):
                dic = dict()
                dic['st_id'] = response.body.data[i][0].st_id
                dic['st_name'] = response.body.data[i][0].st_name
                dic['in_state'] = response.body.data[i][1].in_state
                dic['in_ip'] = response.body.data[i][1].in_ip
                dic['in_score'] = response.body.data[i][1].in_score
                ls.append(dic)
            print("返回数据:", util.objtojson(ls))
            return util.objtojson(ls)
Exemplo n.º 17
0
#!/usr/bin/env python
Exemplo n.º 18
0
    def extract(cls):
        session = web.ctx.session
        information = model.Information_model.query(
            'select * from information where exam_ex_id=%s\
             and student_st_id = %s' % (session.ex_id, session.student_id))
        information = model.Information_model(**information[0])
        lists = model.Strategy_term_model.getByArgs(
            strategy_sg_id=information['sg_id'])
        for strategy_term in lists:
            if strategy_term.sm_type == 'choice':
                if strategy_term.sm_knowledge == 0:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and \
                               qt_diffculty between %s and %s order by rand() limit %s'                                                                                        % \
                                                        (strategy_term.qb_id, "'" + 'choice' + "'",
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                else:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                               = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                 % \
                                                        (strategy_term.qb_id, "'" + 'choice' + "'",
                                                         strategy_term.sm_knowledge,
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high,
                                                         strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                for question in result:
                    qt_id = question.qt_id
                    # 添加exam_questions
                    exam_question = model.Exam_question_model()
                    exam_question.information_in_id = information['in_id']
                    exam_question['qt_id'] = qt_id
                    exam_question.eq_qt_type = question.qt_type
                    exam_question.eq_pre_score = strategy_term.sm_score
                    exam_question.eq_answer = "答案"
                    eq_id = exam_question.insertBackid()
            if strategy_term.sm_type == 'judge':
                if strategy_term.sm_knowledge == 0:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and \
                               qt_diffculty between %s and %s order by rand() limit %s'                                                                                        % \
                                                        (strategy_term.qb_id, "'" + 'judge' + "'",
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                else:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                               = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                 % \
                                                        (strategy_term.qb_id, "'" + 'judge' + "'",
                                                         strategy_term.sm_knowledge,
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high,
                                                         strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                for question in result:
                    # 添加exam_question
                    exam_question = model.Exam_question_model()
                    exam_question.information_in_id = information['in_id']
                    exam_question.qt_id = question.qt_id
                    exam_question.eq_qt_type = question.qt_type
                    exam_question.eq_pre_score = strategy_term.sm_score
                    exam_question.eq_answer = "答案"
                    eq_id = exam_question.insertBackid()
            if strategy_term.sm_type == 'filla':
                if strategy_term.sm_knowledge == 0:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and \
                               qt_diffculty between %s and %s order by rand() limit %s'                                                                                        % \
                                                        (strategy_term.qb_id, "'" + 'filla' + "'",
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                else:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                               = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                 % \
                                                        (strategy_term.qb_id, "'" + 'filla' + "'",
                                                         strategy_term.sm_knowledge,
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high,
                                                         strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                for question in result:
                    # 添加exam_question
                    exam_question = model.Exam_question_model()
                    exam_question.information_in_id = information['in_id']
                    exam_question.qt_id = question.qt_id
                    exam_question.eq_qt_type = question.qt_type
                    exam_question.eq_pre_score = strategy_term.sm_score
                    exam_question.eq_answer = "答案"
                    eq_id = exam_question.insertBackid()
            if strategy_term.sm_type == 'fillb':
                if strategy_term.sm_knowledge == 0:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and \
                               qt_diffculty between %s and %s order by rand() limit %s'                                                                                        % \
                                                        (strategy_term.qb_id, "'" + 'fillb' + "'",
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                else:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                               = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                 % \
                                                        (strategy_term.qb_id, "'" + 'fillb' + "'",
                                                         strategy_term.sm_knowledge,
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high,
                                                         strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                for question in result:
                    fillb_data = model.Fillb_model.getByPK(question.qt_id)
                    # 统计空数量
                    count = fillb_data.fb_pre_coding.count("&&&")
                    count = count / 2

                    eq_id_data = []
                    while count > 0:
                        count = count - 1
                        # 添加exam_question
                        exam_question = model.Exam_question_model()
                        exam_question.information_in_id = information['in_id']
                        exam_question.qt_id = question.qt_id
                        exam_question.eq_qt_type = question.qt_type
                        exam_question.eq_pre_score = strategy_term.sm_score
                        exam_question.eq_answer = "答案"
                        eq_id = exam_question.insertBackid()
            if strategy_term.sm_type == 'coding':
                if strategy_term.sm_knowledge == 0:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and \
                               qt_diffculty between %s and %s order by rand() limit %s'                                                                                        % \
                                                        (strategy_term.qb_id, "'" + 'coding' + "'",
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                else:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                               = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                 % \
                                                        (strategy_term.qb_id, "'" + 'coding' + "'",
                                                         strategy_term.sm_knowledge,
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high,
                                                         strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                for question in result:
                    # 添加exam_question
                    exam_question = model.Exam_question_model()
                    exam_question.information_in_id = information['in_id']
                    exam_question.qt_id = question.qt_id
                    exam_question.eq_qt_type = question.qt_type
                    exam_question.eq_pre_score = strategy_term.sm_score
                    exam_question.eq_answer = "答案"
                    eq_id = exam_question.insertBackid()
        response = util.Response(status=util.Status.__success__, )
        return util.objtojson(response)
Exemplo n.º 19
0
    def POST(self):
        web.header("Access-Control-Allow-Origin", "*")
        params = web.input()
        information = model.Information_model()

        session = web.ctx.session
        information_data = information.query(
            'SELECT * FROM information WHERE \
            student_st_id=%s and exam_ex_id=%s' %
            (session.student_id, session.ex_id))
        information = model.Information_model(**information_data[0])
        information.in_score = util.upInformationScore(information.in_id)
        information.update()
        exam_question = model.Exam_question_model.getByArgs(
            information_in_id=information.in_id)
        choice_question = []
        judge_question = []
        # filla是读程序写结果
        filla_question = []
        fillb_question = []
        coding_question = []
        for item in exam_question:
            if item.eq_get_score == -2:
                item.eq_get_score = u'未出分'
            if item.eq_qt_type == 'choice':
                question_data = model.Question_model.getByPK(item.qt_id)
                choice_data = model.Choice_model.getByPK(item.qt_id)
                item = dict(item, **choice_data)
                item = dict(item, **question_data)
                choice_question.append(item)
            elif item.eq_qt_type == 'judge':
                question_data = model.Question_model.getByPK(item.qt_id)
                judge_data = model.Judge_model.getByPK(item.qt_id)
                item = dict(item, **judge_data)
                item = dict(item, **question_data)
                judge_question.append(item)
            elif item.eq_qt_type == 'filla':
                question_data = model.Question_model.getByPK(item.qt_id)
                filla_data = model.Filla_model.getByPK(item.qt_id)
                item = dict(item, **filla_data)
                item = dict(item, **question_data)
                filla_question.append(item)
            elif item.eq_qt_type == 'coding':
                question_data = model.Question_model.getByPK(item.qt_id)
                coding_data = model.Coding_model.getByPK(item.qt_id)
                item = dict(item, **coding_data)
                item = dict(item, **question_data)
                coding_question.append(item)
        fillb_qt = model.Exam_question_model.query(
            'select distinct(qt_id),\
                                                eq_pre_score from exam_question where information_in_id = %s \
                                                and eq_qt_type = %s' %
            (information.in_id, "'" + 'fillb' + "'"))
        for item in fillb_qt:
            question_data = model.Question_model.getByPK(item['qt_id'])
            fillb_data = model.Fillb_model.getByPK(item['qt_id'])
            eq_id_data = model.Exam_question_model.query('select eq_id,eq_answer,eq_get_score from \
                                                    exam_question where qt_id = %s and information_in_id = %s' \
                                                         % (item['qt_id'], information.in_id))
            eq_id_data = [
                model.Exam_question_model(**items) for items in eq_id_data
            ]
            for question in eq_id_data:
                if question.eq_get_score < 0:
                    question.eq_get_score = u'未出分'
            item = dict(item, **fillb_data)
            item = dict(item, **question_data)
            fillb = []
            fillb.append(item)
            fillb.append(eq_id_data)
            fillb_question.append(fillb)
        question_list = []
        question_list.append(choice_question)
        question_list.append(judge_question)
        question_list.append(filla_question)
        question_list.append(fillb_question)
        question_list.append(coding_question)
        student = model.Student_model.getByPK(session.student_id)
        exam = model.Exam_model.getByPK(session.ex_id)
        student['exam_name'] = exam.ex_name
        if information['in_score'] == -1:
            student['in_score'] = u'未出分,请稍后刷新该页面'
        else:
            student['in_score'] = information['in_score']
        question_list.append(student)
        time = information.in_endtime - datetime.datetime.now()
        count = time.seconds * 1000
        response = util.Response(status=util.Status.__success__,
                                 body=question_list,
                                 message=count)
        return util.objtojson(response)