def problem_copy(user, original_problem, new_problem_set): """ Copies the given problem to the given problem set. Verifies if: a) user can edit the problem. b) user can edit the problem set. Returns the copy of the given problem. """ verify(user.can_view_problem(original_problem)) verify(request.user.can_edit_problem_set(new_problem_set)) new_problem = Problem() new_problem.title = original_problem.title new_problem.description = original_problem.description new_problem.problem_set = new_problem_set new_problem.tags = original_problem.tags new_problem.save() original_parts = original_problem.parts.all() for original_part in original_parts: new_part = Part() new_part.problem = new_problem new_part.description = original_part.description new_part.solution = original_part.solution new_part.validation = original_part.validation new_part.secret = original_part.secret new_part.save() return new_problem
def new(request): problem = Problem() context = {} if request.method == "POST": problem.title = request.POST.get('title','') problem.author = request.POST.get('author','') problem.description = request.POST.get('description','') problem.task = request.POST.get('task', '') problem.solution = request.POST.get('solution', '') problem.user = request.user try: problem.difficulty = int(request.POST.get('difficulty', '0')) except ValueError: problem.difficulty = 0 try: problem.coolness = int(request.POST.get('coolness', '0')) except ValueError: problem.coolness = 0 try: problem.save() for tag_id in request.POST.getlist('tags'): try: tag_obj = Tag.objects.get(id = tag_id) problem.tags.add(tag_obj) except tag.DoesNotExist: pass success_msg(request, "The problem was created successfully.") return redirect('problems-problem', problem.id) except problem.Error as error: error_msg(request, "Could not create the problem because of some errors.") context['error'] = error context['problem'] = problem tags = list(Tag.objects.all()) tags.sort(key = lambda x : pl_filter(x.name.lower())) context['tags'] = tags selected_tags = [] for tag_id in request.POST.getlist('tags'): try: selected_tags.append(int(tag_id)) except ValueError: pass context['selected_tags'] = selected_tags return render(request, 'problems/new.html', context)
# 插入一个比赛 C = Contest() C.description = '写脚本真累' C.participant = 200 C.source = 'zwlin' C.title = 'Testing_Contest' C.create_user = User.objects.get(username='******') C.save() with open("./item.json", 'r') as f: problems = json.load(f) id = 1000 for item in problems: p = Problem() p.problem_id = str(id) p.title = item.get('Title', '') p.description = item.get('ProblemDescription', '') p.input_description = item.get('Input', '') p.output_description = item.get('Output', '') p.sample_input = item.get('SampleInput', '') p.sample_output = item.get('SampleOutput', '') p.hint = item.get('Hint', '') p.source = item.get('Author', '') # 插入1个题目 , 插入外键需要 两个contest 以及 problem 实例 不好改 if id <= 1010: p.contest = Contest.objects.get(pk=1) p.save() id += 1 # str_id = str(id + 2000) # CP = Contest_problem() # CP.contest_problem_id = str_id