예제 #1
0
def exam_add_problem(id,page=1,values=''):
    form = ExamProblemSearchForm()
    problem_list_exam = ExamService.get_prolbem_list_by_id(id)

    if request.method == 'GET':
        values_json = {}
        if values != '':
            values_json = json.loads(base64.b64decode(values))
        pagination = ProLibService.search_problem_info(values_json,page)
        return render_template('web/exam_manage/exam_add_problem.html',
                               id = id,
                               values = values,
                               form = form,
                               pagination = pagination,
                               problem_list = pagination.items,
                               problem_list_exam = problem_list_exam,
                               type = Config.PROBLEM_TYPE_HTML,
                               status=Config.STATUS,
                               active = Config.ADMIN_PAGE_ACTIVE['exam'])

    if form.validate_on_submit():
        if form.submit.data:
            values = base64.b64encode(json.dumps(form.to_dict()))
            return redirect(url_for('web.exam_add_problem', id=id, page=1, values=values))

        elif form.submit_add.data:                                                                                      #按条件批量添加题目
            problem_filter_list = ProLibService.search_problem_info_nopage(form.to_dict())
            ExamService.add_exam_problem_by_list(id,problem_filter_list)
            return redirect(url_for('web.exam_add_problem', id=id, page=page))
    else:
        return redirect(url_for('web.exam_add_problem', id=id, page=page))
예제 #2
0
def make_example_page(id):
    #获取全考题列表
    problem_list_exam = ExamService.get_prolbem_list_by_id(id)
    #获取考题配置
    problem_condition_dict = ExamService.get_problem_condition_dict_byid(id)
    choice = []
    blank = []
    short_answer = []
    #生成样例试卷
    for problem in problem_list_exam:
        problem_detail = ProLibService.get_problem_detailed_info(problem)
        if problem_detail.type == Config.PROBLEM_TYPE['choice']:
            choice.append(problem_detail.pid)
        elif problem_detail.type == Config.PROBLEM_TYPE['blank']:
            blank.append(problem_detail.pid)
        elif problem_detail.type == Config.PROBLEM_TYPE['short_answer']:
            short_answer.append(problem_detail.pid)

    choice_r = random.sample(choice,problem_condition_dict['choice']['num'])
    blank_r = random.sample(blank,problem_condition_dict['blank']['num'])
    short_answer_r = random.sample(short_answer,problem_condition_dict['short_answer']['num'])

    List = choice_r + blank_r + short_answer_r

    ExamService.update_problem_list_example(List,id)

    return redirect(url_for('admin.exam_problem',id=id))