def POST(self): mydata = web.input() print mydata web.header("Access-Control-Allow-Origin", "*") must_params = set({'qt_stem','currentPage',}) question = model.Question_model() Knowledge = model.Knowledge_model() currentPage = int(mydata.currentPage)-1; if(util.paramsok(must_params,mydata) == 2): response = util.Response(status = util.Status.__params_not_ok__) return util.objtojson(response) else: print 222 result = orm.db.query('select * from question where qt_stem like \'%%%s%%\'\ order by qt_id limit %s,%s'%(mydata.qt_stem,currentPage*10,10)) # result = orm.db.query('select * from question where qt_stem like \'%%%s%%\''%(mydata.qt_stem)) questionlist = [] result = [model.Question_model(**item) for item in result ] print result result1= question.query('select count(*) from question where qt_stem like \'%%%s%%\''%(mydata.qt_stem)) count = result1[0]['count(*)'] for params in result: qt = params qt['qt_type']=util.type[qt.qt_type] Knowledge = model.Knowledge_model() KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name questionlist.append(qt) # response = util.Response(status=util.Status.__success__,body = questionlist) # return util.objtojson(response) page = util.Page(data = questionlist, totalRow = count, currentPage = int(mydata.currentPage), pageSize = 10, status=util.Status.__success__, message = "未知") response = util.Response(status=util.Status.__success__,body=page) return util.objtojson(response)
def POST(self): mydata = web.input() qt = model.Question_model() kp = model.Knowledge_model() web.header("Access-Control-Allow-Origin", "*") qbhq = model.Questions_bank_has_question_model() 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() # shutil.rmtree('%s/%s' % (question_source, qt.qt_id)) response = util.Response(status=util.Status.__success__) 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() 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 # 必须有的参数 must_params = set({'questions_bank_qb_id', 'currentPage'}) web.header("Access-Control-Allow-Origin", "*") currentPage = int(mydata.currentPage) - 1 if (util.paramsok(must_params, mydata) == 2): print 333 response = util.Response(status=util.Status.__params_not_ok__) return util.objtojson(response) else: question = model.Question_model() # result = orm.db.query('select * from question where qt_id in (select question_qt_id from questions_bank_has_question where questions_bank_qb_id = %s ) order by qt_id limit %s,%s'%(int(mydata.questions_bank_qb_id),currentPage*10,currentPage*10+9)) result = orm.db.query( 'select * from question where qt_id in \ (select question_qt_id from questions_bank_has_question where questions_bank_qb_id = %s )\ order by qt_id limit %s,%s' % (mydata.questions_bank_qb_id, currentPage * 10, 10)) questionlist = [] result = [model.Question_model(**item) for item in result] # print result result1 = question.query( 'select count(*) from question where qt_id in (select question_qt_id \ from questions_bank_has_question where questions_bank_qb_id = %s )' % (mydata.questions_bank_qb_id)) # print result1[0] count = result1[0]['count(*)'] for params in result: qt = params qt['qt_type'] = util.type[qt.qt_type] Knowledge = model.Knowledge_model() KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name questionlist.append(qt) # response = util.Response(status=util.Status.__success__,body = questionlist) # return util.objtojson(response) page = util.Page(data=questionlist, totalRow=count, currentPage=int(mydata.currentPage), pageSize=10, status=util.Status.__success__, message="未知") response = util.Response(status=util.Status.__success__, body=page) return util.objtojson(response)
def POST(self): mydata = web.input() qt = model.Question_model() kp = model.Knowledge_model() must_params = set (['qt_id']) web.header("Access-Control-Allow-Origin", "*") 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) questiondata = qt.getByArgs(qt_id = qt.qt_id) KnowledgeData = kp.getByArgs(kl_id = questiondata[0]['knowledge_kl_id']) qt_typedata = orm.db.query('select * from %s where question_qt_id = %s'%(questiondata[0].qt_type,qt.qt_id)) result1 = [model.Question_model(**item) for item in qt_typedata ] data = [] data.append(questiondata) data.append(KnowledgeData) data.append(result1) response = util.Response(status=util.Status.__success__,body = data) return util.objtojson(response)
def CreatQuestionSource(delay): while (1): time.sleep(delay) try: num = int(10 ** server_num) question = model.Question_model.query('select * from question where qt_state div %s %% 10 = 0' % (num)) # question = model.Question_model.getByArgs(qt_state=0) question = [model.Question_model(**item) for item in question] for item in question: if item.qt_type == 'coding': coding = model.Coding_model.getByPK(item.qt_id) if os.path.exists('%s/%s' % (question_source, item.qt_id)): shutil.rmtree('%s/%s' % (question_source, item.qt_id)) os.mkdir('%s/%s' % (question_source, item.qt_id)) item.qt_state += num item.update() test_in = coding.co_test_answer_in.split('&&&') test_out = coding.co_test_answer_out.split('&&&') # print len(test_in) 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]) elif item.qt_type == 'fillb': Fillb = model.Fillb_model.getByPK(item.qt_id) if os.path.exists('%s/%s' % (question_source, item.qt_id)): shutil.rmtree('%s/%s' % (question_source, item.qt_id)) os.mkdir('%s/%s' % (question_source, item.qt_id)) item.qt_state += num item.update() 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]) except BaseException as e: print(e)
def POST(self): mydata = web.input() print mydata print 111111111111111111111 qbhq = model.Questions_bank_has_question_model() web.header("Access-Control-Allow-Origin", "*") question = model.Question_model() Knowledge = model.Knowledge_model() must_params = set({'qb_id','qt_type','qt_diffculty_up','qt_diffculty_down','knowledge_kl_id'}) if(util.paramsok(must_params,mydata) == 2): response = util.Response(status = util.Status.__params_not_ok__) return util.objtojson(response) else: # 通过题库ID获取该题库下所有题目ID,并且不在导入题库里 question_id = qbhq.getByArgs(questions_bank_qb_id = mydata.qb_id) question_id = qbhq.query('select * from questions_bank_has_question where \ questions_bank_qb_id = %s and question_qt_id not in (select \ question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s)'%(mydata.qb_id,mydata.questions_bank_qb_id)) question_id = [model.Questions_bank_has_question_model(**item) for item in question_id] # print question_id question_list = [] count = 0 for k in question_id: if mydata.knowledge_kl_id == 'all' and mydata.qt_type == 'all': result = question.query('select * from question where qt_id = %s and qt_diffculty between %s and %s '%(k.question_qt_id,mydata.qt_diffculty_down,mydata.qt_diffculty_up)) result1 = [model.Question_model(**item) for item in result ] if result1: qt=result1[0] qt['qt_type']=util.type[qt.qt_type] KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name question_list.append(qt) count+=1 elif mydata.qt_type == 'all': result = question.query('select * from question where qt_id = %s and knowledge_kl_id = %s and qt_diffculty between %s and %s '%(k.question_qt_id,mydata.knowledge_kl_id,mydata.qt_diffculty_down,mydata.qt_diffculty_up)) result1 = [model.Question_model(**item) for item in result ] if result1: qt=result1[0] qt['qt_type']=util.type[qt.qt_type] KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name question_list.append(qt) count+=1 else: print '空' elif mydata.knowledge_kl_id == 'all': result = question.query('select * from question where qt_id = %s and qt_type = %s and qt_diffculty between %s and %s '%(k.question_qt_id,mydata.qt_type,mydata.qt_diffculty_down,mydata.qt_diffculty_up)) result1 = [model.Question_model(**item) for item in result ] if result1: qt=result1[0] qt['qt_type']=util.type[qt.qt_type] KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name question_list.append(qt) count+=1 else: print '空' # KnowledgeData = Knowledge.getByArgs(kl_id = result1[0].knowledge_kl_id) else: result = question.query('select * from question where qt_id = %s and qt_type = %s and knowledge_kl_id = %s and qt_diffculty between %s and %s '%(k.question_qt_id,mydata.qt_type,mydata.knowledge_kl_id,mydata.qt_diffculty_down,mydata.qt_diffculty_up)) result1 = [model.Question_model(**item) for item in result ] if result1: qt=result1[0] qt['qt_type']=util.type[qt.qt_type] KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name question_list.append(qt) count+=1 else: print '空' currentPage = int(mydata.currentPage)-1 print count if (currentPage*10+10 < count): questiondata=question_list[currentPage*10:currentPage*10+10] else: questiondata=question_list[currentPage*10:count] print 1234567890 print questiondata page = util.Page(data = questiondata, totalRow = count, currentPage = int(mydata.currentPage), pageSize = 10, status=util.Status.__success__, message = "未知") response = util.Response(status = util.Status.__success__,body = page) 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)
#!/usr/bin/env python
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): mydata = web.input() print("查看题目:", mydata) # 必须有的参数 must_params = set({'questions_bank_qb_id', 'currentPage'}) web.header("Access-Control-Allow-Origin", "*") currentPage = int(mydata.currentPage) - 1 if (util.paramsok(must_params, mydata) == 2): print(333) response = util.Response(status=util.Status.__params_not_ok__) return util.objtojson(response) else: question = model.Question_model() # result = orm.db.query('select * from question where qt_id in (select question_qt_id from questions_bank_has_question where questions_bank_qb_id = %s ) order by qt_id limit %s,%s'%(int(mydata.questions_bank_qb_id),currentPage*10,currentPage*10+9)) result = orm.db.query( 'select * from question where qt_id in \ (select question_qt_id from questions_bank_has_question where questions_bank_qb_id = %s )\ order by qt_id limit %s,%s' % (mydata.questions_bank_qb_id, currentPage * 10, 10)) questionlist = [] result = [model.Question_model(**item) for item in result] # print result count = dict() total_num = question.query( 'select count(*) from question where qt_id in (select question_qt_id \ from questions_bank_has_question where questions_bank_qb_id = %s )' % (mydata.questions_bank_qb_id)) # print result1[0] choice_num = question.query( 'select count(*) from question where qt_id in (select question_qt_id \ from questions_bank_has_question where questions_bank_qb_id = %s ) and qt_type = \'choice\'' % (mydata.questions_bank_qb_id)) coding_num = question.query( 'select count(*) from question where qt_id in (select question_qt_id \ from questions_bank_has_question where questions_bank_qb_id = %s ) and qt_type = \'coding\'' % (mydata.questions_bank_qb_id)) filla_num = question.query( 'select count(*) from question where qt_id in (select question_qt_id \ from questions_bank_has_question where questions_bank_qb_id = %s ) \ and qt_type = \'filla\'' % (mydata.questions_bank_qb_id)) fillb_num = question.query( 'select count(*) from question where qt_id in (select question_qt_id \ from questions_bank_has_question where questions_bank_qb_id = %s ) \ and qt_type = \'fillb\'' % (mydata.questions_bank_qb_id)) judge_num = question.query( 'select count(*) from question where qt_id in (select question_qt_id \ from questions_bank_has_question where questions_bank_qb_id = %s ) \ and qt_type = \'judge\'' % (mydata.questions_bank_qb_id)) count['total_num'] = total_num[0]['count(*)'] count['choice_num'] = choice_num[0]['count(*)'] count['coding_num'] = coding_num[0]['count(*)'] count['filla_num'] = filla_num[0]['count(*)'] count['fillb_num'] = fillb_num[0]['count(*)'] count['judge_num'] = judge_num[0]['count(*)'] #util.getFileRotatingLog().debug(count) for params in result: qt = params qt['qt_type'] = util.type[qt.qt_type] Knowledge = model.Knowledge_model() KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name questionlist.append(qt) # response = util.Response(status=util.Status.__success__,body = questionlist) # return util.objtojson(response) page = util.Page(data=questionlist, totalRow=int(count['total_num']), currentPage=int(mydata.currentPage), pageSize=10, status=util.Status.__success__, message=count) response = util.Response(status=util.Status.__success__, body=page) print("返回信息: ", util.objtojson(response)) return util.objtojson(response)
def POST(self): mydata = web.input() qbhq = model.Questions_bank_has_question_model() web.header("Access-Control-Allow-Origin", "*") question = model.Question_model() Knowledge = model.Knowledge_model() must_params = set({ 'qb_id', 'qt_type', 'qt_diffculty_up', 'qt_diffculty_down', 'knowledge_kl_id' }) mydata.qt_diffculty_down = int(mydata.qt_diffculty_down) if (util.paramsok(must_params, mydata) == 2): response = util.Response(status=util.Status.__params_not_ok__) return util.objtojson(response) else: # 通过题库ID获取该题库下所有题目ID question_id = qbhq.getByArgs(questions_bank_qb_id=mydata.qb_id) # print question_id question_list = [] count = 0 for k in question_id: if mydata.knowledge_kl_id == 'all' and mydata.qt_type == 'all': result = question.query( 'select * from question where qt_id = %s and qt_diffculty between %s and %s ' % (k.question_qt_id, mydata.qt_diffculty_down + 5, mydata.qt_diffculty_up)) result1 = [model.Question_model(**item) for item in result] if result1: qt = result1[0] KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name question_list.append(qt) count += 1 elif mydata.qt_type == 'all': result = question.query( 'select * from question where qt_id = %s and knowledge_kl_id = %s and qt_diffculty between %s and %s ' % (k.question_qt_id, mydata.knowledge_kl_id, mydata.qt_diffculty_down + 5, mydata.qt_diffculty_up)) result1 = [model.Question_model(**item) for item in result] if result1: qt = result1[0] KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name question_list.append(qt) count += 1 else: print '空' elif mydata.knowledge_kl_id == 'all': result = question.query( 'select * from question where qt_id = %s and qt_type = %s and qt_diffculty between %s and %s ' % (k.question_qt_id, mydata.qt_type, mydata.qt_diffculty_down + 5, mydata.qt_diffculty_up)) result1 = [model.Question_model(**item) for item in result] if result1: qt = result1[0] KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name question_list.append(qt) count += 1 else: print '空' # KnowledgeData = Knowledge.getByArgs(kl_id = result1[0].knowledge_kl_id) else: result = question.query( 'select * from question where qt_id = %s and qt_type = %s and knowledge_kl_id = %s and qt_diffculty between %s and %s ' % (k.question_qt_id, mydata.qt_type, mydata.knowledge_kl_id, mydata.qt_diffculty_down + 5, mydata.qt_diffculty_up)) result1 = [model.Question_model(**item) for item in result] if result1: qt = result1[0] KnowledgeData = Knowledge.getByPK(qt.knowledge_kl_id) qt['kl_name'] = KnowledgeData.kl_name question_list.append(qt) count += 1 else: print '空' now = datetime.datetime.now() question_bank = model.Questions_bank_model.getByPK(mydata.qb_id) filepath = str(u'%s/%s.docx' % (exampage_source, question_bank.qb_name)) util.QuestionWord(question_list, mydata.qb_id, filepath) # currentPage = int(mydata.currentPage) - 1 # print count # if (currentPage * 10 + 10 < count): # questiondata = question_list[currentPage * 10:currentPage * 10 + 10] # else: # questiondata = question_list[currentPage * 10:count] # page = util.Page(data=questiondata, totalRow=count, currentPage=int(mydata.currentPage), # pageSize=10, status=util.Status.__success__, message="未知") response = util.Response(status=util.Status.__success__, message=u'/source/exampage/%s.docx' % (question_bank.qb_name)) return util.objtojson(response)
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
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): 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 "该场考试没有该学生"
#!/usr/bin/env python
def CreatQuestionSource(threadName, delay): while (1): # print threadName num = int(10**server_num) num = num / 10 question = model.Question_model.query( 'select * from question where qt_state div %s %% 10 = 0' % (num)) # question = model.Question_model.getByArgs(qt_state=0) question = [model.Question_model(**item) for item in question] for item in question: if item.qt_type == 'coding': coding = model.Coding_model.getByArgs( question_qt_id=item.qt_id) coding = coding[0] try: os.mkdir('%s/%s' % (question_source, item.qt_id)) item.qt_state += num item.update() except: # 删除文件 shutil.rmtree('%s/%s' % (question_source, item.qt_id)) continue test_in = coding.co_test_answer_in.split('&&&') test_out = coding.co_test_answer_out.split('&&&') # print len(test_in) 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]) elif item.qt_type == 'fillb': Fillb = model.Fillb_model.getByArgs(question_qt_id=item.qt_id) Fillb = Fillb[0] # if os.path.exists('%s/%s' % (question_source, item.qt_id))==False: # continue # else: # os.mkdir('%s/%s' % (question_source, item.qt_id)) # os.mkdir('%s/%s' % (question_source, Fillb.question_qt_id)) try: os.mkdir('%s/%s' % (question_source, item.qt_id)) item.qt_state += num item.update() except: # 删除文件 shutil.rmtree('%s/%s' % (question_source, item.qt_id)) continue 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]) time.sleep(10)