Exemple #1
0
 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) 
Exemple #2
0
    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)
Exemple #3
0
    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)
Exemple #4
0
 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)
Exemple #5
0
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)
Exemple #6
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'})

        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)
Exemple #7
0
    def POST(self):
        mydata = web.input()
        # print mydata['qt_stem'].encode("utf-8")
        qt = model.Question_model()
        web.header("Access-Control-Allow-Origin", "*")
        qbhq = model.Questions_bank_has_question_model()
        must_params = qt.__notnull__
        if(util.paramsok(must_params,mydata) == 2):
            response = util.Response(status = util.Status.__params_not_ok__)
            return util.objtojson(response)
        else:
            qt = model.Question_model(**mydata)
            if mydata.qt_type == 'choice':
                choice = model.Choice_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    choice.question_qt_id = int(reasurt[0]['max(qt_id)'])
                    choice.insert()
                    qbhq.question_qt_id = choice.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    qbhq.insert()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'coding':
                coding = model.Coding_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    coding.question_qt_id = reasurt[0]['max(qt_id)']
                    qt.qt_id=coding.question_qt_id
                    coding.insert()
                    qbhq.question_qt_id = coding.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    result = qbhq.insertBackid()
                    qbhq.qbhq_id = result[0]['max(qbhq_id)']
                # os.mkdir('%s/%s'%(question_source,coding.question_qt_id))
                # test_in = coding.co_test_answer_in.split('&&&')
                # test_out = coding.co_test_answer_out.split('&&&')
                # for k in range(1, len(test_in) - 1):
                #     with open('%s/%s/%s.in' % (question_source,coding.question_qt_id,k), 'w') as f:
                #         f.write(test_in[k])
                #     with open('%s/%s/%s.out' % (question_source,coding.question_qt_id,k), 'w') as f:
                #         f.write("%s"%test_out[k])
                exam_question = model.Exam_question_model()
                exam_question.information_in_id = 1
                exam_question.qt_id = qbhq.question_qt_id
                exam_question.eq_qt_type = 'coding'
                exam_question.eq_pre_score = 100
                exam_question.eq_get_score = '-2'
                exam_question.eq_answer = coding.co_test_coding
                result = exam_question.insertBackid()
                eq_id = result[0]['max(eq_id)']
                while 1:
                    time.sleep(1)
                    exam_question = model.Exam_question_model.getByPK(eq_id)
                    if exam_question.eq_get_score ==100:
                        response = util.Response(status=util.Status.__success__)
                        return util.objtojson(response)
                    if exam_question.eq_get_score ==0:
                        exam_question.delete()
                        qbhq.delete()
                        coding.delete()
                        qt.delete()
                        response = util.Response(status=util.Status.__error__)
                        return util.objtojson(response)
            elif mydata.qt_type == 'filla':
                Filla = model.Filla_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    Filla.question_qt_id = reasurt[0]['max(qt_id)']

                    Filla.insert()
                    qbhq.question_qt_id = Filla.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    qbhq.insert()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'fillb':
                Fillb = model.Fillb_model(**mydata)
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    Fillb.question_qt_id = reasurt[0]['max(qt_id)']
                    qt.qt_id =  Fillb.question_qt_id
                    Fillb.insert()
                    qbhq.question_qt_id = Fillb.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    result = qbhq.insertBackid()
                    qbhq.qbhq_id = result[0]['max(qbhq_id)']
                # os.mkdir('%s/%s' % (question_source,Fillb.question_qt_id))
                # test_in = Fillb.fb_test_answer_in.split('&&&')
                # test_out = Fillb.fb_test_answer_out.split('&&&')
                # for k in range(1, len(test_in) - 1):
                #     # with open('../examTransplant1.7/source/question/%s/%s.in' % (Fillb.question_qt_id, k), 'w') as f:
                #     with open('%s/%s/%s.in' % (question_source,Fillb.question_qt_id, k), 'w') as f:
                #         f.write(test_in[k])
                #     with open('%s/%s/%s.out' % (question_source,Fillb.question_qt_id, k), 'w') as f:
                #         f.write("%s" % test_out[k])
                exam_question = model.Exam_question_model()
                exam_question.information_in_id = 1
                exam_question.qt_id = qbhq.question_qt_id
                exam_question.eq_qt_type = 'fillb'
                exam_question.eq_pre_score = 100
                exam_question.eq_get_score = '-2'
                exam_question.eq_answer = Fillb.fb_pre_coding.replace('&&&',' ')
                result = exam_question.insertBackid()
                eq_id = result[0]['max(eq_id)']
                while 1:
                    time.sleep(1)
                    exam_question = model.Exam_question_model.getByPK(eq_id)
                    if exam_question.eq_get_score == 100:
                        response = util.Response(status=util.Status.__success__)
                        return util.objtojson(response)
                    if exam_question.eq_get_score == 0:
                        exam_question.delete()
                        qbhq.delete()
                        Fillb.delete()
                        qt.delete()
                        response = util.Response(status=util.Status.__error__)
                        return util.objtojson(response)
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'judge':
                Judge = model.Judge_model(**mydata)
                # print qt
                with orm.db.transaction():
                    qt.insert()
                    reasurt = qt.query('select max(qt_id) from question')
                    Judge.question_qt_id = reasurt[0]['max(qt_id)']
                    Judge.insert()
                    qbhq.question_qt_id = Judge.question_qt_id
                    qbhq.questions_bank_qb_id = mydata.questions_bank_qb_id
                    qbhq.insert()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
Exemple #8
0
#!/usr/bin/env python
Exemple #9
0
    def extract(cls):
        session = web.ctx.session
        information = model.Information_model.query(
            'select * from information where exam_ex_id=%s\
             and student_st_id = %s' % (session.ex_id, session.student_id))
        information = model.Information_model(**information[0])
        lists = model.Strategy_term_model.getByArgs(
            strategy_sg_id=information['sg_id'])
        for strategy_term in lists:
            if strategy_term.sm_type == 'choice':
                if strategy_term.sm_knowledge == 0:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and \
                               qt_diffculty between %s and %s order by rand() limit %s'                                                                                        % \
                                                        (strategy_term.qb_id, "'" + 'choice' + "'",
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                else:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                               = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                 % \
                                                        (strategy_term.qb_id, "'" + 'choice' + "'",
                                                         strategy_term.sm_knowledge,
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high,
                                                         strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                for question in result:
                    qt_id = question.qt_id
                    # 添加exam_questions
                    exam_question = model.Exam_question_model()
                    exam_question.information_in_id = information['in_id']
                    exam_question['qt_id'] = qt_id
                    exam_question.eq_qt_type = question.qt_type
                    exam_question.eq_pre_score = strategy_term.sm_score
                    exam_question.eq_answer = "答案"
                    eq_id = exam_question.insertBackid()
            if strategy_term.sm_type == 'judge':
                if strategy_term.sm_knowledge == 0:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and \
                               qt_diffculty between %s and %s order by rand() limit %s'                                                                                        % \
                                                        (strategy_term.qb_id, "'" + 'judge' + "'",
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                else:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                               = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                 % \
                                                        (strategy_term.qb_id, "'" + 'judge' + "'",
                                                         strategy_term.sm_knowledge,
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high,
                                                         strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                for question in result:
                    # 添加exam_question
                    exam_question = model.Exam_question_model()
                    exam_question.information_in_id = information['in_id']
                    exam_question.qt_id = question.qt_id
                    exam_question.eq_qt_type = question.qt_type
                    exam_question.eq_pre_score = strategy_term.sm_score
                    exam_question.eq_answer = "答案"
                    eq_id = exam_question.insertBackid()
            if strategy_term.sm_type == 'filla':
                if strategy_term.sm_knowledge == 0:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and \
                               qt_diffculty between %s and %s order by rand() limit %s'                                                                                        % \
                                                        (strategy_term.qb_id, "'" + 'filla' + "'",
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                else:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                               = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                 % \
                                                        (strategy_term.qb_id, "'" + 'filla' + "'",
                                                         strategy_term.sm_knowledge,
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high,
                                                         strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                for question in result:
                    # 添加exam_question
                    exam_question = model.Exam_question_model()
                    exam_question.information_in_id = information['in_id']
                    exam_question.qt_id = question.qt_id
                    exam_question.eq_qt_type = question.qt_type
                    exam_question.eq_pre_score = strategy_term.sm_score
                    exam_question.eq_answer = "答案"
                    eq_id = exam_question.insertBackid()
            if strategy_term.sm_type == 'fillb':
                if strategy_term.sm_knowledge == 0:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and \
                               qt_diffculty between %s and %s order by rand() limit %s'                                                                                        % \
                                                        (strategy_term.qb_id, "'" + 'fillb' + "'",
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                else:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                               = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                 % \
                                                        (strategy_term.qb_id, "'" + 'fillb' + "'",
                                                         strategy_term.sm_knowledge,
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high,
                                                         strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                for question in result:
                    fillb_data = model.Fillb_model.getByPK(question.qt_id)
                    # 统计空数量
                    count = fillb_data.fb_pre_coding.count("&&&")
                    count = count / 2

                    eq_id_data = []
                    while count > 0:
                        count = count - 1
                        # 添加exam_question
                        exam_question = model.Exam_question_model()
                        exam_question.information_in_id = information['in_id']
                        exam_question.qt_id = question.qt_id
                        exam_question.eq_qt_type = question.qt_type
                        exam_question.eq_pre_score = strategy_term.sm_score
                        exam_question.eq_answer = "答案"
                        eq_id = exam_question.insertBackid()
            if strategy_term.sm_type == 'coding':
                if strategy_term.sm_knowledge == 0:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and \
                               qt_diffculty between %s and %s order by rand() limit %s'                                                                                        % \
                                                        (strategy_term.qb_id, "'" + 'coding' + "'",
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                else:
                    result = model.Question_model.query('select * from question where qt_id \
                              in (select question_qt_id from questions_bank_has_question where \
                               questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                               = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                 % \
                                                        (strategy_term.qb_id, "'" + 'coding' + "'",
                                                         strategy_term.sm_knowledge,
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high,
                                                         strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                for question in result:
                    # 添加exam_question
                    exam_question = model.Exam_question_model()
                    exam_question.information_in_id = information['in_id']
                    exam_question.qt_id = question.qt_id
                    exam_question.eq_qt_type = question.qt_type
                    exam_question.eq_pre_score = strategy_term.sm_score
                    exam_question.eq_answer = "答案"
                    eq_id = exam_question.insertBackid()
        response = util.Response(status=util.Status.__success__, )
        return util.objtojson(response)
Exemple #10
0
    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)
Exemple #11
0
 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)
Exemple #12
0
    def POST(self):
        mydata = web.input()
        qt = model.Question_model()
        recover_question = model.Question_model.getByPK(mydata.qt_id)
        recover_coding = model.Coding_model.getByPK(mydata.qt_id)
        recover_fillb = model.Fillb_model.getByPK(mydata.qt_id)
        kp = model.Knowledge_model()
        web.header("Access-Control-Allow-Origin", "*")
        must_params = set({
            'qt_id',
            'qt_type',
            'qt_stem',
            'kl_name',
            'qb_id',
        })
        if (util.paramsok(must_params, mydata) == 2):
            response = util.Response(status=util.Status.__params_not_ok__)
            return util.objtojson(response)
        else:
            knowlagedata = kp.getByArgs(kl_name=mydata.kl_name)
            qt = model.Question_model(**mydata)
            qt.knowledge_kl_id = knowlagedata[0].kl_id
            qt.qt_state = 0
            qt.update()
            if mydata.qt_type == 'choice':
                choice = model.Choice_model(**mydata)
                choice.question_qt_id = qt.qt_id
                choice.update()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'coding':
                coding = model.Coding_model(**mydata)
                coding.question_qt_id = qt.qt_id
                coding.update()

                exam_question = model.Exam_question_model()
                exam_question.information_in_id = 1
                exam_question.qt_id = qt.qt_id
                exam_question.eq_qt_type = 'coding'
                exam_question.eq_pre_score = 100
                exam_question.eq_get_score = '-2'
                exam_question.eq_answer = coding.co_test_coding
                result = exam_question.insertBackid()
                eq_id = result[0]['max(eq_id)']
                for i in range(60):
                    time.sleep(1)
                    exam_question = model.Exam_question_model.getByPK(eq_id)
                    if exam_question.eq_get_score == 100:
                        response = util.Response(
                            status=util.Status.__success__)
                        return util.objtojson(response)
                    if exam_question.eq_get_score == 0 or i == 59:
                        recover_coding.update()
                        recover_question.update()
                        qt.update()
                        response = util.Response(status=util.Status.__error__)
                        return util.objtojson(response)
            elif mydata.qt_type == 'filla':
                Filla = model.Filla_model(**mydata)
                Filla.question_qt_id = qt.qt_id
                Filla.update()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'fillb':
                Fillb = model.Fillb_model(**mydata)
                Fillb.question_qt_id = qt.qt_id
                Fillb.update()
                exam_question = model.Exam_question_model()
                exam_question.information_in_id = 1
                exam_question.qt_id = qt.qt_id
                exam_question.eq_qt_type = 'fillb'
                exam_question.eq_pre_score = 100
                exam_question.eq_get_score = '-2'
                exam_question.eq_answer = Fillb.fb_pre_coding
                exam_question.fillb_coding = Fillb.fb_pre_coding.replace(
                    '&&&', ' ')
                result = exam_question.insertBackid()
                eq_id = result[0]['max(eq_id)']
                for i in range(60):
                    time.sleep(1)
                    exam_question = model.Exam_question_model.getByPK(eq_id)
                    if exam_question.eq_get_score == 100:
                        response = util.Response(
                            status=util.Status.__success__)
                        return util.objtojson(response)
                    if exam_question.eq_get_score == 0 or i == 59:
                        recover_fillb.update()
                        recover_question.update()
                        qt.update()
                        response = util.Response(status=util.Status.__error__)
                        return util.objtojson(response)
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
            elif mydata.qt_type == 'judge':
                Judge = model.Judge_model(**mydata)
                Judge.question_qt_id = qt.qt_id
                Judge.update()
                response = util.Response(status=util.Status.__success__)
                return util.objtojson(response)
Exemple #13
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
Exemple #14
0
    def POST(self):
        web.header("Access-Control-Allow-Origin", "*")
        params = web.input()
        information = model.Information_model()
        # 获取策略id
        if 1:
            # args = dict(exam_ex_id = params.ex_id,student_st_id=params.student_id)
            # information_data = information.getByArgs(**args)
            information_data = information.query(
                'SELECT * FROM information WHERE \
                student_st_id=%s and exam_ex_id=%s' %
                (params.student_id, params.ex_id))
            information_data = [
                model.Information_model(**item) for item in information_data
            ]

            # 获取策略项
            # 难度上下限、知识点、题型、数量、题库id-->题目id(多个要大于数量)
            lists = model.Strategy_term_model.getByArgs(
                strategy_sg_id=information_data[0]['sg_id'])
            # 选中的题目
            choice_question = []
            judge_question = []
            # filla是读程序写结果
            filla_question = []
            fillb_question = []
            coding_question = []
            for strategy_term in lists:
                if strategy_term.sm_type == 'choice':
                    result = model.Question_model.query('select * from question where qt_id \
                        in (select question_qt_id from questions_bank_has_question where \
                        questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                        = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                          % \
                                                        (strategy_term.qb_id, "'" + 'choice' + "'",
                                                         strategy_term.sm_knowledge, \
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                    for question in result:
                        qt_id = question.qt_id
                        choice_data = model.Choice_model.getByPK(qt_id)
                        question['score'] = strategy_term.sm_score

                        # 添加exam_question
                        exam_question = model.Exam_question_model()
                        exam_question.information_in_id = information_data[0][
                            'in_id']
                        exam_question['qt_id'] = qt_id
                        exam_question.eq_qt_type = question.qt_type
                        exam_question.eq_pre_score = strategy_term.sm_score
                        eq_id = exam_question.insertBackid()

                        question['eq_id'] = eq_id[0]['max(eq_id)']
                        question = dict(question, **choice_data)
                        choice_question.append(question)

                if strategy_term.sm_type == 'judge':
                    result = model.Question_model.query('select * from question where qt_id \
                        in (select question_qt_id from questions_bank_has_question where \
                        questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                        = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                          % \
                                                        (strategy_term.qb_id, "'" + 'judge' + "'",
                                                         strategy_term.sm_knowledge, \
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                    for question in result:
                        judge_data = model.Judge_model.getByPK(question.qt_id)
                        question['score'] = strategy_term.sm_score

                        # 添加exam_question
                        exam_question = model.Exam_question_model()
                        exam_question.information_in_id = information_data[0][
                            'in_id']
                        exam_question.qt_id = question.qt_id
                        exam_question.eq_qt_type = question.qt_type
                        exam_question.eq_pre_score = strategy_term.sm_score
                        eq_id = exam_question.insertBackid()

                        question['eq_id'] = eq_id[0]['max(eq_id)']
                        question = dict(question, **judge_data)
                        judge_question.append(question)
                if strategy_term.sm_type == 'filla':
                    result = model.Question_model.query('select * from question where qt_id \
                        in (select question_qt_id from questions_bank_has_question where \
                        questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                        = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                          % \
                                                        (strategy_term.qb_id, "'" + 'filla' + "'",
                                                         strategy_term.sm_knowledge, \
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                    for question in result:
                        filla_data = model.Filla_model.getByPK(question.qt_id)
                        question['score'] = strategy_term.sm_score

                        # 添加exam_question
                        exam_question = model.Exam_question_model()
                        exam_question.information_in_id = information_data[0][
                            'in_id']
                        exam_question.qt_id = question.qt_id
                        exam_question.eq_qt_type = question.qt_type
                        exam_question.eq_pre_score = strategy_term.sm_score
                        eq_id = exam_question.insertBackid()

                        question['eq_id'] = eq_id[0]['max(eq_id)']
                        question = dict(question, **filla_data)
                        filla_question.append(question)
                if strategy_term.sm_type == 'fillb':
                    result = model.Question_model.query('select * from question where qt_id \
                        in (select question_qt_id from questions_bank_has_question where \
                        questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                        = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                          % \
                                                        (strategy_term.qb_id, "'" + 'fillb' + "'",
                                                         strategy_term.sm_knowledge, \
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                    for question in result:
                        fillb_data = model.Fillb_model.getByPK(question.qt_id)
                        question['score'] = strategy_term.sm_score
                        # 统计空数量
                        count = fillb_data.fb_pre_coding.count("&&&")
                        count = count / 2

                        eq_id_data = []
                        while count > 0:
                            count = count - 1
                            # 添加exam_question
                            exam_question = model.Exam_question_model()
                            exam_question.information_in_id = information_data[
                                0]['in_id']
                            exam_question.qt_id = question.qt_id
                            exam_question.eq_qt_type = question.qt_type
                            exam_question.eq_pre_score = strategy_term.sm_score
                            eq_id = exam_question.insertBackid()
                            eq_id_data.append(eq_id[0]['max(eq_id)'])
                            pass
                        question = dict(question, **fillb_data)
                        fillb_data = []
                        fillb_data.append(question)
                        fillb_data.append(eq_id_data)
                        fillb_question.append(fillb_data)
                if strategy_term.sm_type == 'coding':
                    result = model.Question_model.query('select * from question where qt_id \
                        in (select question_qt_id from questions_bank_has_question where \
                        questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                        = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                          % \
                                                        (strategy_term.qb_id, "'" + 'coding' + "'",
                                                         strategy_term.sm_knowledge, \
                                                         strategy_term.sm_difficulty_low,
                                                         strategy_term.sm_difficulty_high, strategy_term.sm_number))
                    result = [model.Question_model(**item) for item in result]
                    for question in result:
                        coding_data = model.Coding_model.getByPK(
                            question.qt_id)
                        question['score'] = strategy_term.sm_score

                        # 添加exam_question
                        exam_question = model.Exam_question_model()
                        exam_question.information_in_id = information_data[0][
                            'in_id']
                        exam_question.qt_id = question.qt_id
                        exam_question.eq_qt_type = question.qt_type
                        exam_question.eq_pre_score = strategy_term.sm_score
                        eq_id = exam_question.insertBackid()

                        question['eq_id'] = eq_id[0]['max(eq_id)']
                        question = dict(question, **coding_data)
                        coding_question.append(question)
            question_list = []
            question_list.append(choice_question)
            question_list.append(judge_question)
            question_list.append(filla_question)
            question_list.append(fillb_question)
            question_list.append(coding_question)
            response = util.Response(status=util.Status.__success__,
                                     body=question_list)
            print question_list
            print fillb_question
            return util.objtojson(response)
        else:
            response = util.Response(status=util.Status.__error__)
            return util.objtojson(response)
Exemple #15
0
    def POST(self):
        web.header("Access-Control-Allow-Origin", "*")
        # 接收参数
        params = web.input()
        session = web.ctx.session
        information_data = model.Information_model.query(
            'select * from information where exam_ex_id=%s\
             and student_st_id = %s' % (params.ex_id, params.student_id))

        if information_data:
            information = model.Information_model(**information_data[0])
            exam = model.Exam_model.getByArgs(ex_id=params.ex_id)
            if params.password != exam[0].ex_login_password:
                response = util.Response(status=util.Status.__error__,
                                         message="password_error")
                return util.objtojson(response)
            if information.in_state == '0':
                information.in_temp_ip = web.ctx.ip
                if information.update():
                    information.in_state = '1'
                    information.in_ip = information.in_temp_ip
                    now = datetime.datetime.now()
                    delta = datetime.timedelta(minutes=exam[0].ex_duration)
                    end_time = now + delta
                    information.in_endtime = end_time.strftime(
                        '%Y-%m-%d %H:%M:%S')
                    print information
                    information.update()
                    # 存储session
                    web.setcookie('system_mangement', '', 120)
                    session.student_id = params.student_id
                    session.ex_id = params.ex_id

                    lists = model.Strategy_term_model.getByArgs(
                        strategy_sg_id=information['sg_id'])
                    for strategy_term in lists:
                        if strategy_term.sm_type == 'choice':
                            if strategy_term.sm_knowledge == 0:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and \
                                           qt_diffculty between %s and %s order by rand() limit %s'                                                                                                    % \
                                           (strategy_term.qb_id, "'" + 'choice' + "'",strategy_term.sm_difficulty_low,
                                            strategy_term.sm_difficulty_high,strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            else:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                                           = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                             % \
                                                                    (strategy_term.qb_id, "'" + 'choice' + "'",
                                                                     strategy_term.sm_knowledge,
                                                                     strategy_term.sm_difficulty_low,
                                                                     strategy_term.sm_difficulty_high,
                                                                     strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            for question in result:
                                qt_id = question.qt_id
                                # 添加exam_questions
                                exam_question = model.Exam_question_model()
                                exam_question.information_in_id = information[
                                    'in_id']
                                exam_question['qt_id'] = qt_id
                                exam_question.eq_qt_type = question.qt_type
                                exam_question.eq_pre_score = strategy_term.sm_score
                                exam_question.eq_answer = "答案"
                                eq_id = exam_question.insertBackid()
                        if strategy_term.sm_type == 'judge':
                            if strategy_term.sm_knowledge == 0:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and \
                                           qt_diffculty between %s and %s order by rand() limit %s'                                                                                                    % \
                                           (strategy_term.qb_id, "'" + 'judge' + "'",strategy_term.sm_difficulty_low,
                                            strategy_term.sm_difficulty_high,strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            else:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                                           = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                             % \
                                                                    (strategy_term.qb_id, "'" + 'judge' + "'",
                                                                     strategy_term.sm_knowledge,
                                                                     strategy_term.sm_difficulty_low,
                                                                     strategy_term.sm_difficulty_high,
                                                                     strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            for question in result:
                                # 添加exam_question
                                exam_question = model.Exam_question_model()
                                exam_question.information_in_id = information[
                                    'in_id']
                                exam_question.qt_id = question.qt_id
                                exam_question.eq_qt_type = question.qt_type
                                exam_question.eq_pre_score = strategy_term.sm_score
                                exam_question.eq_answer = "答案"
                                eq_id = exam_question.insertBackid()
                        if strategy_term.sm_type == 'filla':
                            if strategy_term.sm_knowledge == 0:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and \
                                           qt_diffculty between %s and %s order by rand() limit %s'                                                                                                    % \
                                           (strategy_term.qb_id, "'" + 'filla' + "'",strategy_term.sm_difficulty_low,
                                            strategy_term.sm_difficulty_high,strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            else:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                                           = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                             % \
                                                                    (strategy_term.qb_id, "'" + 'filla' + "'",
                                                                     strategy_term.sm_knowledge,
                                                                     strategy_term.sm_difficulty_low,
                                                                     strategy_term.sm_difficulty_high,
                                                                     strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            for question in result:
                                # 添加exam_question
                                exam_question = model.Exam_question_model()
                                exam_question.information_in_id = information[
                                    'in_id']
                                exam_question.qt_id = question.qt_id
                                exam_question.eq_qt_type = question.qt_type
                                exam_question.eq_pre_score = strategy_term.sm_score
                                exam_question.eq_answer = "答案"
                                eq_id = exam_question.insertBackid()
                        if strategy_term.sm_type == 'fillb':
                            if strategy_term.sm_knowledge == 0:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and \
                                           qt_diffculty between %s and %s order by rand() limit %s'                                                                                                    % \
                                           (strategy_term.qb_id, "'" + 'fillb' + "'",strategy_term.sm_difficulty_low,
                                            strategy_term.sm_difficulty_high,strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            else:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                                           = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                             % \
                                                                    (strategy_term.qb_id, "'" + 'fillb' + "'",
                                                                     strategy_term.sm_knowledge,
                                                                     strategy_term.sm_difficulty_low,
                                                                     strategy_term.sm_difficulty_high,
                                                                     strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            for question in result:
                                fillb_data = model.Fillb_model.getByPK(
                                    question.qt_id)
                                # 统计空数量
                                count = fillb_data.fb_pre_coding.count("&&&")
                                count = count / 2

                                eq_id_data = []
                                while count > 0:
                                    count = count - 1
                                    # 添加exam_question
                                    exam_question = model.Exam_question_model()
                                    exam_question.information_in_id = information[
                                        'in_id']
                                    exam_question.qt_id = question.qt_id
                                    exam_question.eq_qt_type = question.qt_type
                                    exam_question.eq_pre_score = strategy_term.sm_score
                                    exam_question.eq_answer = "答案"
                                    eq_id = exam_question.insertBackid()
                        if strategy_term.sm_type == 'coding':
                            if strategy_term.sm_knowledge == 0:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and \
                                           qt_diffculty between %s and %s order by rand() limit %s'                                                                                                    % \
                                           (strategy_term.qb_id, "'" + 'coding' + "'",strategy_term.sm_difficulty_low,
                                            strategy_term.sm_difficulty_high,strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            else:
                                result = model.Question_model.query('select * from question where qt_id \
                                          in (select question_qt_id from questions_bank_has_question where \
                                           questions_bank_qb_id = %s) and qt_type = %s and knowledge_kl_id \
                                           = %s and qt_diffculty between %s and %s order by rand() limit %s'                                                                                                             % \
                                                                    (strategy_term.qb_id, "'" + 'coding' + "'",
                                                                     strategy_term.sm_knowledge,
                                                                     strategy_term.sm_difficulty_low,
                                                                     strategy_term.sm_difficulty_high,
                                                                     strategy_term.sm_number))
                                result = [
                                    model.Question_model(**item)
                                    for item in result
                                ]
                            for question in result:
                                # 添加exam_question
                                exam_question = model.Exam_question_model()
                                exam_question.information_in_id = information[
                                    'in_id']
                                exam_question.qt_id = question.qt_id
                                exam_question.eq_qt_type = question.qt_type
                                exam_question.eq_pre_score = strategy_term.sm_score
                                exam_question.eq_answer = "答案"
                                eq_id = exam_question.insertBackid()
                    response = util.Response(status=util.Status.__success__, )
                    return util.objtojson(response)
                else:
                    print "ip_error"
                    response = util.Response(status=util.Status.__error__,
                                             message="ip_error")
                    return util.objtojson(response)
            elif information.in_state == '1':
                session.student_id = params.student_id
                session.ex_id = params.ex_id
                if datetime.datetime.now() > information.in_endtime:
                    response = util.Response(status=util.Status.__error__,
                                             message="exam is stop")
                    return util.objtojson(response)
                if information.in_ip == None:
                    information.in_ip = web.ctx.ip
                    information.update()
                if information.in_ip != web.ctx.ip:
                    print "ip 不统一"
                    response = util.Response(status=util.Status.__error__,
                                             message="必须使用同一台电脑登录")
                    return util.objtojson(response)
                response = util.Response(status=util.Status.__success__, )
                return util.objtojson(response)
            else:
                response = util.Response(status=util.Status.__error__,
                                         message="已结束考试")
                return util.objtojson(response)
                print "error"
        else:
            response = util.Response(status=util.Status.__error__,
                                     message="您不在该场考试")
            return util.objtojson(response)
            print "该场考试没有该学生"
Exemple #16
0
#!/usr/bin/env python
Exemple #17
0
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)