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
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
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)
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))
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
#!/usr/bin/env python
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)
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)
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)
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)
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): 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)
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