def POST(self): web.header("Access-Control-Allow-Origin", "*") params = web.input() information = model.Information_model() information_data = information.query('SELECT * FROM information WHERE \ class_cl_id=%s and exam_ex_id=%s' % (params.class_cl_id, params.ex_id)) information_data = [model.Information_model(**item) for item in information_data] exam = model.Exam_model.getByPK(params.ex_id) if exam.ex_type=="0": for information in information_data: information.in_endtime = datetime.datetime.now() information.in_state = '2' information.in_temp_ip = None db.update('exam_question', where="information_in_id = %s" % (information.in_id), eq_get_score='-2', ) information.update() response = util.Response(status=util.Status.__success__, ) return util.objtojson(response) else: if exam.ex_auto =="1": for information in information_data: information.in_endtime = datetime.datetime.now() if information.in_state=='1': information.in_state = '2' information.in_temp_ip = None db.update('exam_question', where="information_in_id = %s" % (information.in_id), eq_get_score='-2', ) information.update() thread.start_new(util.GetScore, (1,information.in_id)) response = util.Response(status=util.Status.__success__, ) return util.objtojson(response)
def POST(self): web.header("Access-Control-Allow-Origin", "*") must_params = ('st_id', 'st_name', 'cl_id') params = web.input() if util.paramsok(must_params, params) == Status.__params_not_ok__: response = util.Response(Status.__params_not_ok__, message='参数错误!') return util.objtojson(response) st_has_cl = Student_has_class_model(student_st_id=params.st_id, class_cl_id=params.cl_id) # del params.cl_id s = Student_model(st_id=params.st_id) try: st_exist = s.getByArgs(**s) if st_exist: if st_has_cl.insert(): information = model.Information_model.query('select \ distinct(exam_ex_id),sg_id from information where \ class_cl_id = %s' % (params.cl_id)) if information != None: information = [ model.Information_model(**item) for item in information ] for item in information: item.class_cl_id = params.cl_id item.student_st_id = params.st_id item.insert() else: print "none" response = util.Response(Status.__success__, message="该学生已添加进课程班级") return util.objtojson(response) response = util.Response(Status.__success__, message="该学生已存在于课程班级,不能重复添加!") return util.objtojson(response) else: s = Student_model(**params) s.insert() st_has_cl.insert() information = model.Information_model.query('select \ distinct(exam_ex_id),sg_id from information where \ class_cl_id = %s' % (params.cl_id)) if information != None: information = [ model.Information_model(**item) for item in information ] for item in information: item.class_cl_id = params.cl_id item.student_st_id = params.st_id item.insert() else: print "none" response = util.Response(Status.__success__, message="该学生已添加进课程班级!") return util.objtojson(response) except Exception as e: response = util.Response(Status.__error__, message="error") return util.objtojson(response)
def POST(self): web.header("Access-Control-Allow-Origin", "*") information = model.Information_model() session = web.ctx.session information_data = information.query( 'SELECT * FROM information WHERE \ student_st_id=%s and exam_ex_id=%s' % (session.student_id, session.ex_id)) information = model.Information_model(**information_data[0]) information.in_endtime = datetime.datetime.now() information.in_state = '2' information.in_temp_ip = None exam = model.Exam_model.getByPK(session.ex_id) if exam.ex_type == "0": util.SaveFillb(information.in_id) db.update( 'exam_question', where="information_in_id = %s" % (information.in_id), eq_get_score='-2', ) # information.in_score = util.upInformationScore(1000,information.in_id) # while 1: # exam_question = model.Exam_question_model.getByArgs(information_in_id=information.in_id) # information.in_score = 0 # flag = 0 # for question in exam_question: # if question.eq_get_score >= 0: # information.in_score += question.eq_get_score # else: # flag = 1 # break # if flag == 0: # break # information.in_state = '0' information.update() response = util.Response(status=util.Status.__params_ok__, message=information.in_score) return util.objtojson(response) else: if exam.ex_auto == "1": util.SaveFillb(information.in_id) db.update( 'exam_question', where="information_in_id = %s" % (information.in_id), eq_get_score='-2', ) thread.start_new(util.GetScore, (1, information.in_id)) information.update() response = util.Response(status=util.Status.__success__, ) return util.objtojson(response)
def POST(self): params = web.input() web.header("Access-Control-Allow-Origin", "*") exam = model.Exam_model.getByPK(params.ex_id) exam.ex_state = '1' delta = exam.ex_time_end - exam.ex_time_start exam.ex_time_start = datetime.datetime.now() exam.ex_time_end = exam.ex_time_start + delta exam.update() information_data = model.Information_model.query( 'SELECT * FROM information WHERE \ exam_ex_id=%s' % (params.ex_id)) information_data = [ model.Information_model(**items) for items in information_data ] for information in information_data: information.in_state = '0' information.inscore = -1 information.in_ip = None information.update() db.delete('exam_question', where="information_in_id = $information_in_id", vars={ 'information_in_id': information.in_id, }) response = util.Response(status=util.Status.__success__, ) return util.objtojson(response)
def POST(self): web.header("Access-Control-Allow-Origin", "*") params = web.input() exam = model.Exam_model() must_params = exam.__notnull__ if (util.paramsok(must_params, params) == 2): response = util.Response(status=util.Status.__params_not_ok__) return util.objtojson(response) else: exam = model.Exam_model(**params) if exam.insert(): result = exam.query("select max(ex_id) from exam") lastExamId = int(result[0]['max(ex_id)']) # 获取教务班学生id stuHasClass = model.Student_has_class_model() classId = params['class_cl_id'].encode('utf-8') classId = classId.split(',') for k in range(1, len(classId) - 1): listStuid = stuHasClass.getByArgs(class_cl_id=classId[k]) for stuID in listStuid: informationArgs = dict( student_st_id=stuID.student_st_id, exam_ex_id=lastExamId, class_cl_id=classId[k], sg_id=exam.strategy_sg_id) information = model.Information_model( **informationArgs) information.insert() response = util.Response(status=util.Status.__success__) return util.objtojson(response) else: response = util.Response(status=util.Status.__error__) return util.objtojson(response)
def POST(self): web.header("Access-Control-Allow-Origin", "*") params = web.input() exam = model.Exam_model() must_params = exam.__notnull__ if (util.paramsok(must_params, params) == 2): response = util.Response(status=util.Status.__params_not_ok__) return util.objtojson(response) else: exam = model.Exam_model(**params) if exam.update(): # 获取教务班学生id stuHasClass = model.Student_has_class_model() classId = params['add_class_cl_id'].encode('utf-8') classId = classId.split(',') print 'add_class_cl_id' print classId for k in range(1, len(classId) - 1): print 1234567 print classId[k] listStuid = stuHasClass.getByArgs(class_cl_id=classId[k]) for stuID in listStuid: informationArgs = dict( student_st_id=stuID.student_st_id, exam_ex_id=exam.ex_id, class_cl_id=classId[k], sg_id=exam.strategy_sg_id) information = model.Information_model( **informationArgs) information.insert() delete_classId = params['delete_class_cl_id'].encode('utf-8') delete_classId = delete_classId.split(',') print 'delete_class_cl_id' print delete_classId for k in range(1, len(delete_classId) - 1): listStuid = stuHasClass.getByArgs( class_cl_id=delete_classId[k]) for stuID in listStuid: # informationArgs = dict(student_st_id=stuID.student_st_id, exam_ex_id=exam.ex_id, # class_cl_id=delete_classId[k]) # information = model.Information_model() # information_id = information.getByArgs(informationArgs) # information.in_id = information_id[0]['in_id'] # information.delete() db.delete('information', where="student_st_id = $student_st_id \ and exam_ex_id = $exam_ex_id", vars={ 'student_st_id': stuID.student_st_id, 'exam_ex_id': exam.ex_id }) response = util.Response(status=util.Status.__success__) return util.objtojson(response) else: response = util.Response(status=util.Status.__error__) return util.objtojson(response)
def POST(self): web.header("Access-Control-Allow-Origin", "*") mydata = web.input() cl = model.Class_model() exam = model.Exam_model() information = model.Information_model() student = model.Student_model() information_data = orm.db.query( 'select * from information where exam_ex_id = %s and class_cl_id = %s' % (mydata.ex_id, mydata.cl_id)) # information_data = orm.db.query('select * from information where exam_ex_id = %s'%(mydata.ex_id)) information_data = [ model.Information_model(**item) for item in information_data ] student_data = [] examquestion_data = [] for k in information_data: result = student.getByArgs(st_id=k.student_st_id) student_data.append(result) k['in_state'] = util.in_state[int(k.in_state)] if k['in_score'] == -1: k['in_score'] = u'未出分' result = model.Exam_question_model.getByArgs( information_in_id=k.in_id) for question in result: if question.eq_get_score < 0: question.eq_get_score = u'未出分' examquestion_data.append(result) data = [] data.append(information_data) data.append(student_data) data.append(examquestion_data) page = util.Page(data=data, totalRow=len(student_data), currentPage=int(mydata.currentPage), pageSize=10, status=util.Status.__success__, message="未知") response = util.Response(status=util.Status.__success__, body=page) return util.objtojson(response)
def POST(self): web.header("Access-Control-Allow-Origin", "*") # 接收参数 params = web.input() params.setdefault("in_state", '1') params.setdefault("in_ip", web.ctx.ip) information = model.Information_model(**params) if information.update(): response = util.Response(status=util.Status.__error__) return util.objtojson(response) else: response = util.Response(status=util.Status.__success__) return util.objtojson(response)
def POST(self): web.header("Access-Control-Allow-Origin", "*") session = web.ctx.session information_data = model.Information_model.query( 'SELECT * FROM information WHERE \ student_st_id=%s and exam_ex_id=%s' % (session.student_id, session.ex_id)) information = model.Information_model(**information_data[0]) now = datetime.datetime.now() exam = model.Exam_model.getByArgs(ex_id=session.ex_id) delta = datetime.timedelta(minutes=exam[0].ex_duration) end_time = now + delta information.in_endtime = end_time.strftime('%Y-%m-%d %H:%M:%S') information.in_state = '1' information.update() response = util.Response(status=util.Status.__success__, ) return util.objtojson(response)
def GetScore(delay, in_id): while 1: time.sleep(delay) exam_question = model.Exam_question_model.getByArgs(information_in_id=in_id) score = 0 flag = 0 for question in exam_question: if question.eq_get_score >= 0: score += question.eq_get_score else: flag = 1 break if flag == 0: information = model.Information_model() information.in_id = in_id information.in_score = score information.update() break
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))
#coding=utf-8 from docx import Document from docx.shared import Pt from docx.shared import Inches from docx.oxml.ns import qn from model import model #打开文档 document = Document() #加入不同等级的标题 exam=model.Exam_model.getByPK(1) document.add_heading(u'\t\t'+exam['ex_name'],0) information = model.Information_model() information_data = information.query('SELECT * FROM information WHERE \ student_st_id=%s and exam_ex_id=%s' % (2014112207, 2)) information = model.Information_model(**information_data[0]) exam_question = model.Exam_question_model.getByArgs(information_in_id=information.in_id) choice_question = [] judge_question = [] # filla是读程序写结果 filla_question = [] fillb_question = [] coding_question = [] for item in exam_question: if item.eq_qt_type == 'choice': question_data = model.Question_model.getByPK(item.qt_id) choice_data = model.Choice_model.getByPK(item.qt_id) item = dict(item, **choice_data) item = dict(item, **question_data) choice_question.append(item)
#!/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): web.header("Access-Control-Allow-Origin", "*") # 接收参数 params = web.input() session = web.ctx.session information_data = model.Information_model.query( 'select * from information where exam_ex_id=%s\ and student_st_id = %s' % (params.ex_id, params.student_id)) if information_data: information = model.Information_model(**information_data[0]) exam = model.Exam_model.getByArgs(ex_id=params.ex_id) if params.password != exam[0].ex_login_password: response = util.Response(status=util.Status.__error__, message="password_error") return util.objtojson(response) if information.in_state == '0': information.in_temp_ip = web.ctx.ip if information.update(): information.in_state = '1' information.in_ip = information.in_temp_ip now = datetime.datetime.now() delta = datetime.timedelta(minutes=exam[0].ex_duration) end_time = now + delta information.in_endtime = end_time.strftime( '%Y-%m-%d %H:%M:%S') print information information.update() # 存储session web.setcookie('system_mangement', '', 120) session.student_id = params.student_id session.ex_id = params.ex_id lists = model.Strategy_term_model.getByArgs( strategy_sg_id=information['sg_id']) for strategy_term in lists: if strategy_term.sm_type == 'choice': if strategy_term.sm_knowledge == 0: result = model.Question_model.query('select * from question where qt_id \ in (select question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s) and qt_type = %s and \ qt_diffculty between %s and %s order by rand() limit %s' % \ (strategy_term.qb_id, "'" + 'choice' + "'",strategy_term.sm_difficulty_low, strategy_term.sm_difficulty_high,strategy_term.sm_number)) result = [ model.Question_model(**item) for item in result ] else: result = model.Question_model.query('select * from question where qt_id \ in (select question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \ = %s and qt_diffculty between %s and %s order by rand() limit %s' % \ (strategy_term.qb_id, "'" + 'choice' + "'", strategy_term.sm_knowledge, strategy_term.sm_difficulty_low, strategy_term.sm_difficulty_high, strategy_term.sm_number)) result = [ model.Question_model(**item) for item in result ] for question in result: qt_id = question.qt_id # 添加exam_questions exam_question = model.Exam_question_model() exam_question.information_in_id = information[ 'in_id'] exam_question['qt_id'] = qt_id exam_question.eq_qt_type = question.qt_type exam_question.eq_pre_score = strategy_term.sm_score exam_question.eq_answer = "答案" eq_id = exam_question.insertBackid() if strategy_term.sm_type == 'judge': if strategy_term.sm_knowledge == 0: result = model.Question_model.query('select * from question where qt_id \ in (select question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s) and qt_type = %s and \ qt_diffculty between %s and %s order by rand() limit %s' % \ (strategy_term.qb_id, "'" + 'judge' + "'",strategy_term.sm_difficulty_low, strategy_term.sm_difficulty_high,strategy_term.sm_number)) result = [ model.Question_model(**item) for item in result ] else: result = model.Question_model.query('select * from question where qt_id \ in (select question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \ = %s and qt_diffculty between %s and %s order by rand() limit %s' % \ (strategy_term.qb_id, "'" + 'judge' + "'", strategy_term.sm_knowledge, strategy_term.sm_difficulty_low, strategy_term.sm_difficulty_high, strategy_term.sm_number)) result = [ model.Question_model(**item) for item in result ] for question in result: # 添加exam_question exam_question = model.Exam_question_model() exam_question.information_in_id = information[ 'in_id'] exam_question.qt_id = question.qt_id exam_question.eq_qt_type = question.qt_type exam_question.eq_pre_score = strategy_term.sm_score exam_question.eq_answer = "答案" eq_id = exam_question.insertBackid() if strategy_term.sm_type == 'filla': if strategy_term.sm_knowledge == 0: result = model.Question_model.query('select * from question where qt_id \ in (select question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s) and qt_type = %s and \ qt_diffculty between %s and %s order by rand() limit %s' % \ (strategy_term.qb_id, "'" + 'filla' + "'",strategy_term.sm_difficulty_low, strategy_term.sm_difficulty_high,strategy_term.sm_number)) result = [ model.Question_model(**item) for item in result ] else: result = model.Question_model.query('select * from question where qt_id \ in (select question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \ = %s and qt_diffculty between %s and %s order by rand() limit %s' % \ (strategy_term.qb_id, "'" + 'filla' + "'", strategy_term.sm_knowledge, strategy_term.sm_difficulty_low, strategy_term.sm_difficulty_high, strategy_term.sm_number)) result = [ model.Question_model(**item) for item in result ] for question in result: # 添加exam_question exam_question = model.Exam_question_model() exam_question.information_in_id = information[ 'in_id'] exam_question.qt_id = question.qt_id exam_question.eq_qt_type = question.qt_type exam_question.eq_pre_score = strategy_term.sm_score exam_question.eq_answer = "答案" eq_id = exam_question.insertBackid() if strategy_term.sm_type == 'fillb': if strategy_term.sm_knowledge == 0: result = model.Question_model.query('select * from question where qt_id \ in (select question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s) and qt_type = %s and \ qt_diffculty between %s and %s order by rand() limit %s' % \ (strategy_term.qb_id, "'" + 'fillb' + "'",strategy_term.sm_difficulty_low, strategy_term.sm_difficulty_high,strategy_term.sm_number)) result = [ model.Question_model(**item) for item in result ] else: result = model.Question_model.query('select * from question where qt_id \ in (select question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \ = %s and qt_diffculty between %s and %s order by rand() limit %s' % \ (strategy_term.qb_id, "'" + 'fillb' + "'", strategy_term.sm_knowledge, strategy_term.sm_difficulty_low, strategy_term.sm_difficulty_high, strategy_term.sm_number)) result = [ model.Question_model(**item) for item in result ] for question in result: fillb_data = model.Fillb_model.getByPK( question.qt_id) # 统计空数量 count = fillb_data.fb_pre_coding.count("&&&") count = count / 2 eq_id_data = [] while count > 0: count = count - 1 # 添加exam_question exam_question = model.Exam_question_model() exam_question.information_in_id = information[ 'in_id'] exam_question.qt_id = question.qt_id exam_question.eq_qt_type = question.qt_type exam_question.eq_pre_score = strategy_term.sm_score exam_question.eq_answer = "答案" eq_id = exam_question.insertBackid() if strategy_term.sm_type == 'coding': if strategy_term.sm_knowledge == 0: result = model.Question_model.query('select * from question where qt_id \ in (select question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s) and qt_type = %s and \ qt_diffculty between %s and %s order by rand() limit %s' % \ (strategy_term.qb_id, "'" + 'coding' + "'",strategy_term.sm_difficulty_low, strategy_term.sm_difficulty_high,strategy_term.sm_number)) result = [ model.Question_model(**item) for item in result ] else: result = model.Question_model.query('select * from question where qt_id \ in (select question_qt_id from questions_bank_has_question where \ questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \ = %s and qt_diffculty between %s and %s order by rand() limit %s' % \ (strategy_term.qb_id, "'" + 'coding' + "'", strategy_term.sm_knowledge, strategy_term.sm_difficulty_low, strategy_term.sm_difficulty_high, strategy_term.sm_number)) result = [ model.Question_model(**item) for item in result ] for question in result: # 添加exam_question exam_question = model.Exam_question_model() exam_question.information_in_id = information[ 'in_id'] exam_question.qt_id = question.qt_id exam_question.eq_qt_type = question.qt_type exam_question.eq_pre_score = strategy_term.sm_score exam_question.eq_answer = "答案" eq_id = exam_question.insertBackid() response = util.Response(status=util.Status.__success__, ) return util.objtojson(response) else: print "ip_error" response = util.Response(status=util.Status.__error__, message="ip_error") return util.objtojson(response) elif information.in_state == '1': session.student_id = params.student_id session.ex_id = params.ex_id if datetime.datetime.now() > information.in_endtime: response = util.Response(status=util.Status.__error__, message="exam is stop") return util.objtojson(response) if information.in_ip == None: information.in_ip = web.ctx.ip information.update() if information.in_ip != web.ctx.ip: print "ip 不统一" response = util.Response(status=util.Status.__error__, message="必须使用同一台电脑登录") return util.objtojson(response) response = util.Response(status=util.Status.__success__, ) return util.objtojson(response) else: response = util.Response(status=util.Status.__error__, message="已结束考试") return util.objtojson(response) print "error" else: response = util.Response(status=util.Status.__error__, message="您不在该场考试") return util.objtojson(response) print "该场考试没有该学生"
def POST(self): debug = 0 if debug == 1: class Mydata: pass mydata = Mydata() mydata.ex_id = 4 mydata.cl_id = 2 else: web.header("Access-Control-Allow-Origin", "*") mydata = web.input() student = model.Student_model() information_data = orm.db.query( 'select * from information where exam_ex_id = %s and class_cl_id = %s' % (mydata.ex_id, mydata.cl_id)) information_data = [ model.Information_model(**item) for item in information_data ] data = [] for single_information in information_data: single_student_data = [] single_student_data.append( student.getByPK(single_information.student_st_id)) single_student_data.append(single_information) single_information['in_state'] = util.in_state[int( single_information.in_state)] if single_information['in_score'] == -1: single_information['in_score'] = u'未出分' result = model.Exam_question_model.getByArgs( information_in_id=single_information.in_id) result_mapping = { 'choice': [], 'judge': [], 'filla': [], 'fillb': [], 'coding': [] } for question in result: if question.eq_qt_type == 'fillb': if len(result_mapping["fillb"]) == 0 or result_mapping[ "fillb"][-1].qt_id != question.qt_id: if question.eq_get_score < 0: question.eq_get_score = u'未出分' result_mapping["fillb"].append(question) elif result_mapping["fillb"][-1].qt_id == question.qt_id: if result_mapping["fillb"][ -1].eq_get_score == u'未出分' or question.eq_get_score < 0: result_mapping["fillb"][-1].eq_get_score = u'未出分' else: result_mapping["fillb"][ -1].eq_get_score += question.eq_get_score else: if question.eq_get_score < 0: question.eq_get_score = u'未出分' result_mapping[str(question.eq_qt_type)].append(question) examquestion_data = [] examquestion_data.extend(result_mapping['choice']) examquestion_data.extend(result_mapping['judge']) examquestion_data.extend(result_mapping['filla']) examquestion_data.extend(result_mapping["fillb"]) examquestion_data.extend(result_mapping['coding']) single_student_data.append(examquestion_data) print(single_student_data) data.append(single_student_data) if debug != 1: page = util.Page(data=data, totalRow=len(data), currentPage=int(mydata.currentPage), pageSize=10, status=util.Status.__success__, message="未知") response = util.Response(status=util.Status.__success__, body=page) #return util.objtojson(response) ls = list() for i in range(len(response.body.data)): dic = dict() dic['st_id'] = response.body.data[i][0].st_id dic['st_name'] = response.body.data[i][0].st_name dic['in_state'] = response.body.data[i][1].in_state dic['in_ip'] = response.body.data[i][1].in_ip dic['in_score'] = response.body.data[i][1].in_score ls.append(dic) print("返回数据:", util.objtojson(ls)) return util.objtojson(ls)
#!/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): 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)