Exemplo n.º 1
0
 def AddProblem(self, event):  # wxGlade: ProblemTools.<event_handler>
     dlg = ProblemSelector(self.GetParent())
     if dlg.ShowModal()==wx.ID_OK:
         p = Problem()
         p.name = dlg.active_code
         p.severity = Problem.SEVERITY_CHOICES[dlg.severity.GetSelection()][0]
         p.activity = Problem.ACTIVITY_CHOICES[dlg.activity.GetSelection()][0]
         p.expiry = dlg.expiry.GetValue()
         if p.expiry.IsValid():
             p.expiry = p.expiry.FormatISODate()
         else:
             p.expiry = None
         p.parent = None
         p.save()
         self.GetParent().Reload()
Exemplo n.º 2
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.º 3
0
def problem_new(request):
    profile = check_auth(request.POST.get('token'))
    if not isinstance(profile, Profile):
        return profile

    try:
        title = request.POST['title']
        description = request.POST['description']
        photo = request.POST.get('photo')
        tag = Tag.objects.get(name=request.POST['tag'])
    except KeyError as e:
        return HttpResponseBadRequest('Не все поля заполнены: ' +
                                      str(e.args[0]))

    latitude = request.POST.get('latitude')
    longitude = request.POST.get('longitude')
    address = request.POST.get('address')

    try:
        if latitude and longitude:
            latitude, longitude, address = ll_to_address(latitude, longitude)
        elif address:
            latitude, longitude, address = address_to_ll(address)
        else:
            return HttpResponseBadRequest(
                'Отсутствует местоположение (координаты или адрес)')
    except Exception:
        return HttpResponseServerError('Ошибка Yandex API')

    try:
        problem = Problem(user=profile,
                          title=title,
                          description=description,
                          photo=photo,
                          tag=tag,
                          latitude=latitude,
                          longitude=longitude,
                          address=address)
        problem.save()
    except Exception:
        return HttpResponseServerError('Ошибка сохранения в БД')
    return HttpResponse()
Exemplo n.º 4
0
def update_problem():
    problem_file = os.path.join(cur_dir, 'json/problem.json')

    with open(problem_file, 'r') as f:
        problems = json.loads(f.read())

    for p in problems:
        keyword = p['keyword'][0].strip()
        name = p['name'][0].strip()
        if p['source']:
            source = p['source'][0].strip()
        else:
            source = '기타'
        category = [c.strip() for c in p['category']]
        submitted = int(p['submitted'][0])
        accepted = int(p['accepted'][0])

        try:
            s = Source.objects.get(name=source)
        except Source.DoesNotExist:
            s = Source(name=source)
            s.save()

        try:
            p = Problem.objects.get(keyword=keyword)
            p.submitted = submitted
            p.accepted = accepted
        except:
            p = Problem(keyword=keyword, name=name, source=s,
                        submitted=submitted, accepted=accepted)
        finally:
            p.save()

        for c in category:
            try:
                c = Category.objects.get(name=c)
            except Category.DoesNotExist:
                c = Category(name=c)
                c.save()
            p.category.add(c)
Exemplo n.º 5
0
def download_problem(id):
    url = archive_url + "/?q=node/" + id
    print(url)
    r = requests.get(url, cookies=js_cookie)
    soup = BeautifulSoup(r.text, 'html.parser')

    problem_data = fetch_statement(soup, 'node-' + id)
    statement = problem_data[0]
    solution = problem_data[1]

    problem = Problem(statement=statement, solution=solution)
    problem.save()

    for tag_name in fetch_tags(soup):
        if Tag.objects.filter(name=tag_name):
            tag = Tag.objects.get(name=tag_name)
        else:
            tag = Tag(name=tag_name, type_id=tag_types.index('Źródło'))
            tag.save()

        problem.tag_set.add(tag)

    problem.save()
Exemplo n.º 6
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)
import json
from problems.models import Problem

with open('problems.json') as f:
    problems_json = json.load(f)

for problem in problems_json:
    problem = Problem(oj_name=problem['oj_name'],
                      prob_id=problem['prob_id'],
                      name=problem['name'],
                      category=problem['category'],
                      link=problem['link'])

for problem in problems_json:
    problem = Problem(oj_name=problem['oj_name'],
                      prob_id=problem['prob_id'],
                      name=problem['name'],
                      category=problem['category'],
                      link=problem['link'])
    problem.save()
Exemplo n.º 8
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)
Exemplo n.º 9
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)