From cec27407e190029c0feda47f00bccbac91204624 Mon Sep 17 00:00:00 2001 From: zema1 Date: Thu, 2 Nov 2017 21:37:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcpp=E5=BC=95=E7=94=A8bits/std?= =?UTF-8?q?c++=E6=97=B6=E7=9A=84=E7=BC=96=E8=AF=91=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=20=E6=94=AF=E6=8C=81=E5=85=AC=E5=BC=80=E6=AF=94?= =?UTF-8?q?=E8=B5=9B=E9=A2=98=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- judge/languages.py | 6 +++--- problem/urls/admin.py | 3 ++- problem/views/admin.py | 28 +++++++++++++++++++++++++++- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/judge/languages.py b/judge/languages.py index 1c2fd302..2a4281d0 100644 --- a/judge/languages.py +++ b/judge/languages.py @@ -23,7 +23,7 @@ int main() { "exe_name": "main", "max_cpu_time": 3000, "max_real_time": 5000, - "max_memory": 128 * 1024 * 1024, + "max_memory": 256 * 1024 * 1024, "compile_command": "/usr/bin/gcc -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c99 {src_path} -lm -o {exe_path}", }, "run": { @@ -59,7 +59,7 @@ _cpp_lang_config = { "exe_name": "main", "max_cpu_time": 3000, "max_real_time": 5000, - "max_memory": 128 * 1024 * 1024, + "max_memory": 256 * 1024 * 1024, "compile_command": "/usr/bin/g++ -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c++11 {src_path} -lm -o {exe_path}", }, "run": { @@ -100,7 +100,7 @@ _java_lang_config = { }, "run": { "command": "/usr/bin/java -cp {exe_dir} -Xss1M -Xms16M -Xmx{max_memory}k " - "-Djava.security.manager -Djava.security.policy==/etc/java_policy -Djava.awt.headless=true Main", + "-Djava.security.manager -Djava.security.policy=/etc/java_policy -Djava.awt.headless=true Main", "seccomp_rule": None, "env": ["MALLOC_ARENA_MAX=1"] } diff --git a/problem/urls/admin.py b/problem/urls/admin.py index ba0feeb2..7cc9afa6 100644 --- a/problem/urls/admin.py +++ b/problem/urls/admin.py @@ -1,9 +1,10 @@ from django.conf.urls import url -from ..views.admin import ContestProblemAPI, ProblemAPI, TestCaseUploadAPI +from ..views.admin import ContestProblemAPI, ProblemAPI, TestCaseUploadAPI, MakeContestProblemPublicAPIView urlpatterns = [ url(r"^test_case/upload/?$", TestCaseUploadAPI.as_view(), name="test_case_upload_api"), url(r"^problem/?$", ProblemAPI.as_view(), name="problem_admin_api"), url(r"^contest/problem/?$", ContestProblemAPI.as_view(), name="contest_problem_admin_api"), + url(r"^contest_problem/make_public/?$", MakeContestProblemPublicAPIView.as_view(), name="make_public_api"), ] diff --git a/problem/views/admin.py b/problem/views/admin.py index af7708e2..c0c3d3da 100644 --- a/problem/views/admin.py +++ b/problem/views/admin.py @@ -305,7 +305,7 @@ class ContestProblemAPI(ProblemBase): user = request.user try: - problem = Problem.objects.get(id=problem_id, contest=contest) + problem = Problem.objects.get(id=problem_id) if not user.can_mgmt_all_problem() and problem.created_by != user: return self.error("Problem does not exist") except Problem.DoesNotExist: @@ -336,3 +336,29 @@ class ContestProblemAPI(ProblemBase): tag = ProblemTag.objects.create(name=tag) problem.tags.add(tag) return self.success() + + +class MakeContestProblemPublicAPIView(APIView): + @problem_permission_required + def post(self, request): + problem_id = request.data.get("problem_id") + if not problem_id: + return self.error("problem_id is required") + try: + problem = Problem.objects.get(id=problem_id) + except Problem.DoesNotExist: + return self.error("Problem does not exist") + if not problem.contest or problem.is_public: + return self.error("Alreay be a public problem") + problem.is_public = True + problem.save() + # https://docs.djangoproject.com/en/1.11/topics/db/queries/#copying-model-instances + tags = problem.tags.all() + problem.pk = None + problem.contest = None + problem.submission_number = problem.accepted_number = 0 + problem.statistic_info = {} + problem.save() + problem.tags.set(tags) + return self.success() +