Пример #1
0
 def POST(self):
     mydata = web.input()
     qb = model.Questions_bank_model()
     must_params = qb.__notnull__
     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:
         qb = model.Questions_bank_model(**mydata)
         if qb.update():
             response = util.Response(status=util.Status.__success__)
             return util.objtojson(response)
         else:
             response = util.Response(status=util.Status.__error__)
             return util.objtojson(response)
Пример #2
0
    def POST(self):
        mydata = web.input()
        qb = model.Questions_bank_model()
        must_params = set (['qb_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)
        elif str(mydata.deletepassword) == '123456':
            qb.qb_id = mydata.qb_id
            result = model.Questions_bank_has_question_model.getByArgs( \
                questions_bank_qb_id = qb.qb_id)
            for item in result:
                questions_bank_has_question = model.Questions_bank_has_question_model()
                questions_bank_has_question.qbhq_id = item.qbhq_id
                questions_bank_has_question.delete()

            if qb.delete():
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            else:
                response = util.Response(status=util.Status.__error__)
                return util.objtojson(response)
        response = util.Response(status=util.Status.__error__)
        return util.objtojson(response)
Пример #3
0
    def POST(self):
        mydata = web.input()
        print("删除题库", mydata)
        qb = model.Questions_bank_model()
        must_params = set(['qb_id'])
        web.header("Access-Control-Allow-Origin", "*")
        session = web.ctx.session
        # util.getFileRotatingLog().debug(session.password)           # 写入到log文件
        if (util.paramsok(must_params, mydata) == 2):
            response = util.Response(status=util.Status.__params_not_ok__)
            return util.objtojson(response)
        elif str(mydata.deletepassword) == session.password:
            qb.qb_id = mydata.qb_id
            result = model.Questions_bank_has_question_model.getByArgs( \
                questions_bank_qb_id = qb.qb_id)
            for item in result:
                questions_bank_has_question = model.Questions_bank_has_question_model(
                )
                questions_bank_has_question.qbhq_id = item.qbhq_id
                questions_bank_has_question.delete()

            if qb.delete():
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            else:
                response = util.Response(status=util.Status.__error__,
                                         message="删除失败")
                return util.objtojson(response)
        else:
            response = util.Response(status=util.Status.__error__,
                                     message="密码错误")
            return util.objtojson(response)
        response = util.Response(status=util.Status.__error__, message="删除失败")
        return util.objtojson(response)
Пример #4
0
 def POST(self):
     web.header("Access-Control-Allow-Origin", "*")
     mydata = web.input()
     #mydata={'qb_id': 1081}
     print(mydata)
     qb = model.Questions_bank_model()
     response = qb.getByArgs(qb_id=mydata['qb_id'])
     print("返回值: ", util.objtojson(response))
     return util.objtojson(response)
Пример #5
0
 def GET(self):
     print RequestQuestionBack
     mydata = web.input()
     web.header("Access-Control-Allow-Origin", "*")
     Knowledge = model.Knowledge_model()
     KnowledgeData = Knowledge.getByArgs()
     questionback = model.Questions_bank_model()
     questionbackData = questionback.getByArgs()
     data = []
     data.append(KnowledgeData)
     data.append(questionbackData)
     response = util.Response(status=util.Status.__success__,body=data)
     return util.objtojson(response)
Пример #6
0
 def POST(self):
     web.header("Access-Control-Allow-Origin", "*") 
     mydata = web.input()
     # must_params =set({'currentPage'})
     must_params =set({})
     if(util.paramsok(must_params, mydata) == 2):
         response = util.Response(status=util.Status.__params_not_ok__)
         return util.objtojson(response)
     else:
         qb = model.Questions_bank_model()
         count = qb.count()
         reasurt = qb.getByPage(int(mydata.currentPage)-1)
         page = util.Page(data = reasurt, 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) 
Пример #7
0
#!/usr/bin/env python
Пример #8
0
 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'
     })
     mydata.qt_diffculty_down = int(mydata.qt_diffculty_down)
     questionbank1 = model.Questions_bank_model()
     questionbank2 = model.Questions_bank_model()
     questionbank1 = questionbank1.getByArgs(qb_id=mydata.qb_id)
     questionbank2 = questionbank2.getByArgs(
         qb_id=mydata.questions_bank_qb_id)
     print(questionbank1)
     print(questionbank2)
     if questionbank1[0]['qb_lang'] != questionbank2[0]['qb_lang']:
         response = util.Response(status=util.Status.__error__,
                                  message="语言不一致,导题失败!")
         print(util.objtojson(response))
         return util.objtojson(response)
     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 + 5,
                        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 + 5, 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 + 5, 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 +
                        5, 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]
         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)
         print("返回值: ", util.objtojson(response))
         return util.objtojson(response)
Пример #9
0
    def POST(self):
        mydata = web.input()
        print(mydata)
        # print mydata['qt_stem'].encode("utf-8")
        qt = model.Question_model()
        web.header("Access-Control-Allow-Origin", "*")
        qbhq = model.Questions_bank_has_question_model()
        qb = model.Questions_bank_model()
        print(mydata['questions_bank_qb_id'])
        qb = qb.getByArgs(qb_id=mydata['questions_bank_qb_id'])
        # print(qb)
        # print(qb[0]['qb_lang'])
        mydata['qt_lang'] = qb[0]['qb_lang']
        # print("更新后的mydata: ", mydata)
        must_params = qt.__notnull__
        if (util.paramsok(must_params, mydata) == 2):
            response = util.Response(status=util.Status.__params_not_ok__)
            return util.objtojson(response)
        else:
            qt = model.Question_model(**mydata)
            if mydata.qt_type == 'choice':
                choice = model.Choice_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    choice.question_qt_id = int(reasurt[0]['max(qt_id)'])
                    choice.insert()
                    qbhq.question_qt_id = choice.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    qbhq.insert()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)

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

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

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