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))
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))