添加问题可见/不可见的API

This commit is contained in:
2024-07-02 21:28:37 +08:00
parent ee10972d6e
commit a891255605
2 changed files with 16 additions and 1 deletions

View File

@@ -2,12 +2,13 @@ from django.urls import path
from ..views.admin import (ContestProblemAPI, ProblemAPI, TestCaseAPI, MakeContestProblemPublicAPIView,
CompileSPJAPI, AddContestProblemAPI, ExportProblemAPI, ImportProblemAPI,
FPSProblemImport)
FPSProblemImport, ProblemVisibleAPI)
urlpatterns = [
path("test_case", TestCaseAPI.as_view()),
path("compile_spj", CompileSPJAPI.as_view()),
path("problem", ProblemAPI.as_view()),
path("problem/visible", ProblemVisibleAPI.as_view()),
path("contest/problem", ContestProblemAPI.as_view()),
path("contest_problem/make_public", MakeContestProblemPublicAPIView.as_view()),
path("contest/add_problem_from_public", AddContestProblemAPI.as_view()),

View File

@@ -703,3 +703,17 @@ class FPSProblemImport(CSRFExemptAPIView):
problem_data["test_case_score"] = score
self._create_problem(problem_data, request.user)
return self.success({"import_count": len(problems)})
class ProblemVisibleAPI(APIView):
@problem_permission_required
def put(self, request):
id = request.GET.get("problem_id")
try:
problem = Problem.objects.get(id=id)
ensure_created_by(problem, request.user)
except Problem.DoesNotExist:
self.error("problem does not exists")
problem.visible = not problem.visible
problem.save()
self.success()