diff --git a/oj/urls.py b/oj/urls.py index badcca09..909d6bb0 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -13,7 +13,7 @@ from group.views import (GroupAdminAPIView, GroupMemberAdminAPIView, from admin.views import AdminTemplateView -from problem.views import TestCaseUploadAPIView, ProblemAdminAPIView +from problem.views import TestCaseUploadAPIView, ProblemTagAdminAPIView, ProblemAdminAPIView from submission.views import SubmissionAPIView urlpatterns = [ @@ -49,6 +49,7 @@ urlpatterns = [ url(r'^api/admin/group_join/$', JoinGroupAPIView.as_view(), name="group_join_admin_api"), url(r'^api/admin/problem/$', ProblemAdminAPIView.as_view(), name="problem_admin_api"), url(r'^api/admin/test_case_upload/$', TestCaseUploadAPIView.as_view(), name="test_case_upload_api"), + url(r'^api/admin/tag/$', ProblemTagAdminAPIView.as_view(), name="problem_tag_admin_api"), url(r'^problem/(?P\d+)/my_submissions/$', "submission.views.problem_my_submissions_list_page", name="problem_my_submissions_page"), url(r'^my_submission/(?P\w+)/$', "submission.views.my_submission", name="my_submission_page"), diff --git a/problem/tests.py b/problem/tests.py index 17d098d2..91affaea 100644 --- a/problem/tests.py +++ b/problem/tests.py @@ -39,6 +39,7 @@ class ProblemPageTest(TestCase): self.assertTemplateUsed(response, "utils/error.html") + class ProblemAdminTest(APITestCase): def _create_data(self, problem_id, visible, tags): data = {"id": problem_id, @@ -147,3 +148,19 @@ class ProblemAdminTest(APITestCase): data = {"problem_id": 1} response = self.client.get(self.url, data=data) self.assertEqual(response.data["code"], 0) + + +class ProblemTagAdminAPITest(APITestCase): + def setUp(self): + self.client = APIClient() + self.url = reverse('problem_tag_admin_api') + self.user = User.objects.create(username="testx", admin_type=SUPER_ADMIN) + self.user.set_password("testxx") + self.user.save() + self.client.login(username="testx", password="testxx") + ProblemTag.objects.create(name="tag1") + + # 以下是返回所有的问题的标签 + def test_get_all_problem_tag_successfully(self): + self.assertEqual(self.client.get(self.url).data["code"], 0) + diff --git a/problem/views.py b/problem/views.py index 64a58b4b..1d1702d7 100644 --- a/problem/views.py +++ b/problem/views.py @@ -28,6 +28,11 @@ def problem_page(request, problem_id): return render(request, "oj/problem/problem.html", {"problem": problem, "samples": json.loads(problem.samples)}) +class ProblemTagAdminAPIView(APIView): + def get(self, request): + return success_response(ProblemTagSerializer(ProblemTag.objects.all(), many=True).data) + + class ProblemAdminAPIView(APIView): def post(self, request): """