示例#1
0
文件: util.py 项目: blacker-boy/web3
def SaveFillb(information_in_id):
    examquestion = model.Exam_question_model.query('select distinct(qt_id) from exam_question where information_in_id = %s and  eq_qt_type =%s'% \
                                                   (information_in_id,"'"+'fillb'+"'"))
    examquestion = [model.Exam_question_model(**item) for item in examquestion]
    if examquestion!=None:
        for fillb_qt in examquestion:
            fillb = model.Fillb_model.getByPK(fillb_qt['qt_id'])
            fillb_question = model.Exam_question_model.query('select * from exam_question where information_in_id = %s and  qt_id =%s'% \
                                                   (information_in_id,fillb_qt['qt_id']))
            fillb_question = [model.Exam_question_model(**item) for item in fillb_question]
            i = 1
            for item in fillb_question:
                j = 2 * i - 1
                fillb_coding = fillb.fb_pre_coding.split('&&&')
                fillb_coding[j] = item.eq_answer
                item.fillb_coding = ''.join(fillb_coding)
                item.update()
                i +=1
示例#2
0
def SaveFillb(information_in_id):
    examquestion = model.Exam_question_model.query('select distinct(qt_id) from exam_question where information_in_id = %s and  eq_qt_type =%s'% \
                                                   (information_in_id,"'"+'fillb'+"'"))
    examquestion = [model.Exam_question_model(**item) for item in examquestion]
    if examquestion != None:
        for fillb_qt in examquestion:  # 对试题表中的每一道程序填空题进行处理
            fillb = model.Fillb_model.getByPK(
                fillb_qt['qt_id'])  # 根据id查询程序填空题表,返回对象
            fillb_question = model.Exam_question_model.query('select * from exam_question where information_in_id = %s and  qt_id =%s'% \
                                                   (information_in_id,fillb_qt['qt_id']))       # 查询试题表中的该题,返回对象
            fillb_question = [
                model.Exam_question_model(**item) for item in fillb_question
            ]  # 转化成列表
            i = 1
            for item in fillb_question:
                getFileRotatingLog().debug(item)  # 将信息写入到log文件
                j = 2 * i - 1
                fillb_coding = fillb.fb_pre_coding.split('&&&')
                fillb_coding[j] = item.eq_answer
                item.fillb_coding = ''.join(fillb_coding)
                item.update()
                i += 1
示例#3
0
 def POST(self):
     web.header("Access-Control-Allow-Origin", "*")
     params = web.input()
     session = web.ctx.session
     exam_question = model.Exam_question_model(**params)
     exam_information = model.Information_model.query(
         'select * from information\
      where student_st_id = %s and exam_ex_id = %s' %
         (session.student_id, session.ex_id))
     information = exam_information[0]
     if information.in_state != '1':
         print "已结束考试"
         response = util.Response(status=util.Status.__error__,
                                  message="已结束考试")
         return util.objtojson(response)
     if exam_question.update():
         time = information.in_endtime - datetime.datetime.now()
         count = time.seconds * 1000
         response = util.Response(status=util.Status.__success__,
                                  message=count)
         return util.objtojson(response)
     else:
         response = util.Response(status=util.Status.__error__, )
         return util.objtojson(response)
示例#4
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))
示例#5
0
        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
示例#6
0
#!/usr/bin/env python
示例#7
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)
示例#8
0
    def POST(self):
        mydata = web.input()
        # print mydata['qt_stem'].encode("utf-8")
        qt = model.Question_model()
        web.header("Access-Control-Allow-Origin", "*")
        qbhq = model.Questions_bank_has_question_model()
        must_params = qt.__notnull__
        if(util.paramsok(must_params,mydata) == 2):
            response = util.Response(status = util.Status.__params_not_ok__)
            return util.objtojson(response)
        else:
            qt = model.Question_model(**mydata)
            if mydata.qt_type == 'choice':
                choice = model.Choice_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    choice.question_qt_id = int(reasurt[0]['max(qt_id)'])
                    choice.insert()
                    qbhq.question_qt_id = choice.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    qbhq.insert()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'coding':
                coding = model.Coding_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    coding.question_qt_id = reasurt[0]['max(qt_id)']
                    qt.qt_id=coding.question_qt_id
                    coding.insert()
                    qbhq.question_qt_id = coding.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    result = qbhq.insertBackid()
                    qbhq.qbhq_id = result[0]['max(qbhq_id)']
                # os.mkdir('%s/%s'%(question_source,coding.question_qt_id))
                # test_in = coding.co_test_answer_in.split('&&&')
                # test_out = coding.co_test_answer_out.split('&&&')
                # for k in range(1, len(test_in) - 1):
                #     with open('%s/%s/%s.in' % (question_source,coding.question_qt_id,k), 'w') as f:
                #         f.write(test_in[k])
                #     with open('%s/%s/%s.out' % (question_source,coding.question_qt_id,k), 'w') as f:
                #         f.write("%s"%test_out[k])
                exam_question = model.Exam_question_model()
                exam_question.information_in_id = 1
                exam_question.qt_id = qbhq.question_qt_id
                exam_question.eq_qt_type = 'coding'
                exam_question.eq_pre_score = 100
                exam_question.eq_get_score = '-2'
                exam_question.eq_answer = coding.co_test_coding
                result = exam_question.insertBackid()
                eq_id = result[0]['max(eq_id)']
                while 1:
                    time.sleep(1)
                    exam_question = model.Exam_question_model.getByPK(eq_id)
                    if exam_question.eq_get_score ==100:
                        response = util.Response(status=util.Status.__success__)
                        return util.objtojson(response)
                    if exam_question.eq_get_score ==0:
                        exam_question.delete()
                        qbhq.delete()
                        coding.delete()
                        qt.delete()
                        response = util.Response(status=util.Status.__error__)
                        return util.objtojson(response)
            elif mydata.qt_type == 'filla':
                Filla = model.Filla_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    Filla.question_qt_id = reasurt[0]['max(qt_id)']

                    Filla.insert()
                    qbhq.question_qt_id = Filla.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    qbhq.insert()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'fillb':
                Fillb = model.Fillb_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    Fillb.question_qt_id = reasurt[0]['max(qt_id)']
                    qt.qt_id =  Fillb.question_qt_id
                    Fillb.insert()
                    qbhq.question_qt_id = Fillb.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    result = qbhq.insertBackid()
                    qbhq.qbhq_id = result[0]['max(qbhq_id)']
                # os.mkdir('%s/%s' % (question_source,Fillb.question_qt_id))
                # test_in = Fillb.fb_test_answer_in.split('&&&')
                # test_out = Fillb.fb_test_answer_out.split('&&&')
                # for k in range(1, len(test_in) - 1):
                #     # with open('../examTransplant1.7/source/question/%s/%s.in' % (Fillb.question_qt_id, k), 'w') as f:
                #     with open('%s/%s/%s.in' % (question_source,Fillb.question_qt_id, k), 'w') as f:
                #         f.write(test_in[k])
                #     with open('%s/%s/%s.out' % (question_source,Fillb.question_qt_id, k), 'w') as f:
                #         f.write("%s" % test_out[k])
                exam_question = model.Exam_question_model()
                exam_question.information_in_id = 1
                exam_question.qt_id = qbhq.question_qt_id
                exam_question.eq_qt_type = 'fillb'
                exam_question.eq_pre_score = 100
                exam_question.eq_get_score = '-2'
                exam_question.eq_answer = Fillb.fb_pre_coding.replace('&&&',' ')
                result = exam_question.insertBackid()
                eq_id = result[0]['max(eq_id)']
                while 1:
                    time.sleep(1)
                    exam_question = model.Exam_question_model.getByPK(eq_id)
                    if exam_question.eq_get_score == 100:
                        response = util.Response(status=util.Status.__success__)
                        return util.objtojson(response)
                    if exam_question.eq_get_score == 0:
                        exam_question.delete()
                        qbhq.delete()
                        Fillb.delete()
                        qt.delete()
                        response = util.Response(status=util.Status.__error__)
                        return util.objtojson(response)
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'judge':
                Judge = model.Judge_model(**mydata)
                # print qt
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    Judge.question_qt_id = reasurt[0]['max(qt_id)']
                    Judge.insert()
                    qbhq.question_qt_id = Judge.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    qbhq.insert()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
示例#9
0
#!/usr/bin/env python
示例#10
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)
示例#11
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)
示例#12
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 "该场考试没有该学生"
示例#13
0
    def POST(self):
        mydata = web.input()
        qt = model.Question_model()
        recover_question = model.Question_model.getByPK(mydata.qt_id)
        recover_coding = model.Coding_model.getByPK(mydata.qt_id)
        recover_fillb = model.Fillb_model.getByPK(mydata.qt_id)
        kp = model.Knowledge_model()
        web.header("Access-Control-Allow-Origin", "*")
        must_params = set({
            'qt_id',
            'qt_type',
            'qt_stem',
            'kl_name',
            'qb_id',
        })
        if (util.paramsok(must_params, mydata) == 2):
            response = util.Response(status=util.Status.__params_not_ok__)
            return util.objtojson(response)
        else:
            knowlagedata = kp.getByArgs(kl_name=mydata.kl_name)
            qt = model.Question_model(**mydata)
            qt.knowledge_kl_id = knowlagedata[0].kl_id
            qt.qt_state = 0
            qt.update()
            if mydata.qt_type == 'choice':
                choice = model.Choice_model(**mydata)
                choice.question_qt_id = qt.qt_id
                choice.update()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'coding':
                coding = model.Coding_model(**mydata)
                coding.question_qt_id = qt.qt_id
                coding.update()

                exam_question = model.Exam_question_model()
                exam_question.information_in_id = 1
                exam_question.qt_id = qt.qt_id
                exam_question.eq_qt_type = 'coding'
                exam_question.eq_pre_score = 100
                exam_question.eq_get_score = '-2'
                exam_question.eq_answer = coding.co_test_coding
                result = exam_question.insertBackid()
                eq_id = result[0]['max(eq_id)']
                for i in range(60):
                    time.sleep(1)
                    exam_question = model.Exam_question_model.getByPK(eq_id)
                    if exam_question.eq_get_score == 100:
                        response = util.Response(
                            status=util.Status.__success__)
                        return util.objtojson(response)
                    if exam_question.eq_get_score == 0 or i == 59:
                        recover_coding.update()
                        recover_question.update()
                        qt.update()
                        response = util.Response(status=util.Status.__error__)
                        return util.objtojson(response)
            elif mydata.qt_type == 'filla':
                Filla = model.Filla_model(**mydata)
                Filla.question_qt_id = qt.qt_id
                Filla.update()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'fillb':
                Fillb = model.Fillb_model(**mydata)
                Fillb.question_qt_id = qt.qt_id
                Fillb.update()
                exam_question = model.Exam_question_model()
                exam_question.information_in_id = 1
                exam_question.qt_id = qt.qt_id
                exam_question.eq_qt_type = 'fillb'
                exam_question.eq_pre_score = 100
                exam_question.eq_get_score = '-2'
                exam_question.eq_answer = Fillb.fb_pre_coding
                exam_question.fillb_coding = Fillb.fb_pre_coding.replace(
                    '&&&', ' ')
                result = exam_question.insertBackid()
                eq_id = result[0]['max(eq_id)']
                for i in range(60):
                    time.sleep(1)
                    exam_question = model.Exam_question_model.getByPK(eq_id)
                    if exam_question.eq_get_score == 100:
                        response = util.Response(
                            status=util.Status.__success__)
                        return util.objtojson(response)
                    if exam_question.eq_get_score == 0 or i == 59:
                        recover_fillb.update()
                        recover_question.update()
                        qt.update()
                        response = util.Response(status=util.Status.__error__)
                        return util.objtojson(response)
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'judge':
                Judge = model.Judge_model(**mydata)
                Judge.question_qt_id = qt.qt_id
                Judge.update()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
示例#14
0
    def POST(self):
        mydata = web.input()
        print(mydata)
        # print mydata['qt_stem'].encode("utf-8")
        qt = model.Question_model()
        web.header("Access-Control-Allow-Origin", "*")
        qbhq = model.Questions_bank_has_question_model()
        qb = model.Questions_bank_model()
        print(mydata['questions_bank_qb_id'])
        qb = qb.getByArgs(qb_id=mydata['questions_bank_qb_id'])
        # print(qb)
        # print(qb[0]['qb_lang'])
        mydata['qt_lang'] = qb[0]['qb_lang']
        # print("更新后的mydata: ", mydata)
        must_params = qt.__notnull__
        if (util.paramsok(must_params, mydata) == 2):
            response = util.Response(status=util.Status.__params_not_ok__)
            return util.objtojson(response)
        else:
            qt = model.Question_model(**mydata)
            if mydata.qt_type == 'choice':
                choice = model.Choice_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    choice.question_qt_id = int(reasurt[0]['max(qt_id)'])
                    choice.insert()
                    qbhq.question_qt_id = choice.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    qbhq.insert()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)

            # 编程题加题时需要把题目先加入到exam_question表,判题系统取出题目进行判题,如果判题成功则加入到question表
            elif mydata.qt_type == 'coding':
                # qb = model.Questions_bank_model()
                # print(mydata['questions_bank_qb_id'])
                # qb = qb.getByArgs(qb_id=mydata['questions_bank_qb_id'])
                #mydata['eq_lang'] = qb[0]['qb_lang']
                #print("更改后的mydata",mydata)
                coding = model.Coding_model(**mydata)  # 实例化一个编程题
                with orm.db.transaction():
                    qt.insert()  # 插入到question表
                    reasurt = qt.query('select max(qt_id) from question')
                    coding.question_qt_id = reasurt[0]['max(qt_id)']
                    qt.qt_id = coding.question_qt_id
                    coding.insert()  # 插入到coding表
                    qbhq.question_qt_id = coding.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    result = qbhq.insertBackid()  # 插入到qbhd表
                    qbhq.qbhq_id = result[0]['max(qbhq_id)']
                # os.mkdir('%s/%s'%(question_source,coding.question_qt_id))
                # test_in = coding.co_test_answer_in.split('&&&')
                # test_out = coding.co_test_answer_out.split('&&&')
                # for k in range(1, len(test_in) - 1):
                #     with open('%s/%s/%s.in' % (question_source,coding.question_qt_id,k), 'w') as f:
                #         f.write(test_in[k])
                #     with open('%s/%s/%s.out' % (question_source,coding.question_qt_id,k), 'w') as f:
                #         f.write("%s"%test_out[k])
                exam_question = model.Exam_question_model(
                )  # 实例化exam_question表
                exam_question.information_in_id = 1
                exam_question.qt_id = qbhq.question_qt_id
                exam_question.eq_qt_type = 'coding'
                exam_question.eq_pre_score = 100
                exam_question.eq_get_score = '-2'  # -2为待判题状态
                exam_question.eq_answer = coding.co_test_coding
                exam_question.eq_lang = qb[0]['qb_lang']
                result = exam_question.insertBackid()  # 插入到exam_question表
                eq_id = result[0]['max(eq_id)']
                for i in range(60):  # 判题最大时长为1分钟
                    time.sleep(1)
                    exam_question = model.Exam_question_model.getByPK(eq_id)
                    if exam_question.eq_get_score == 100:  # 判题成功,判题系统将该字段变为100
                        response = util.Response(
                            status=util.Status.__success__)
                        return util.objtojson(response)
                    if exam_question.eq_get_score == 0 or i == 59:  # 判题失败时删除改题目的所有信息
                        exam_question.delete()
                        qbhq.delete()
                        coding.delete()
                        qt.delete()
                        response = util.Response(status=util.Status.__error__)
                        return util.objtojson(response)
            elif mydata.qt_type == 'filla':
                Filla = model.Filla_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    Filla.question_qt_id = reasurt[0]['max(qt_id)']

                    Filla.insert()
                    qbhq.question_qt_id = Filla.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    qbhq.insert()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)

            # 程序填空题加题时需要把题目先加入到exam_question表,判题系统取出题目进行判题,如果判题成功则加入到question表
            elif mydata.qt_type == 'fillb':
                Fillb = model.Fillb_model(**mydata)
                with orm.db.transaction():
                    Fillb.question_qt_id = qt.qt_id = qt.insertBackid(
                    )[0]['max(qt_id)']
                    Fillb.insert()
                    qbhq.question_qt_id = Fillb.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    result = qbhq.insertBackid()
                    qbhq.qbhq_id = result[0]['max(qbhq_id)']
                # os.mkdir('%s/%s' % (question_source,Fillb.question_qt_id))
                # test_in = Fillb.fb_test_answer_in.split('&&&')
                # test_out = Fillb.fb_test_answer_out.split('&&&')
                # for k in range(1, len(test_in) - 1):
                #     # with open('../examTransplant1.7/source/question/%s/%s.in' % (Fillb.question_qt_id, k), 'w') as f:
                #     with open('%s/%s/%s.in' % (question_source,Fillb.question_qt_id, k), 'w') as f:
                #         f.write(test_in[k])
                #     with open('%s/%s/%s.out' % (question_source,Fillb.question_qt_id, k), 'w') as f:
                #         f.write("%s" % test_out[k])
                exam_question = model.Exam_question_model()
                exam_question.information_in_id = 1
                exam_question.qt_id = qbhq.question_qt_id
                exam_question.eq_qt_type = 'fillb'
                exam_question.eq_pre_score = 100
                exam_question.eq_get_score = '-2'
                exam_question.eq_answer = Fillb.fb_pre_coding
                exam_question.eq_lang = qb[0]['qb_lang']
                exam_question.fillb_coding = Fillb.fb_pre_coding.replace(
                    '&&&', ' ')
                # util.getFileRotatingLog().debug(exam_question.fillb_coding)              #写入到log文件
                result = exam_question.insertBackid()
                eq_id = result[0]['max(eq_id)']
                for i in range(60):
                    time.sleep(1)
                    exam_question = model.Exam_question_model.getByPK(eq_id)
                    if exam_question.eq_get_score == 100:
                        response = util.Response(
                            status=util.Status.__success__)
                        return util.objtojson(response)
                    if exam_question.eq_get_score == 0 or i == 59:
                        exam_question.delete()
                        qbhq.delete()
                        Fillb.delete()
                        qt.delete()
                        response = util.Response(status=util.Status.__error__)
                        return util.objtojson(response)
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'judge':
                Judge = model.Judge_model(**mydata)
                # print qt
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    Judge.question_qt_id = reasurt[0]['max(qt_id)']
                    Judge.insert()
                    qbhq.question_qt_id = Judge.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    qbhq.insert()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)  # 返回一个对象,status = 1