Exemplo n.º 1
0
 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
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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
        # CP.contest_id = 'A001'