|
16 | 16 | ProblemListSerializer, |
17 | 17 | TagSerializer, |
18 | 18 | ) |
19 | | -from segmentoj.decorator import syllable_required, parameter_required |
| 19 | +from segmentoj.decorator import ( |
| 20 | + syllable_required, |
| 21 | + parameter_required, |
| 22 | +) |
20 | 23 | from status.models import Status |
| 24 | +from .decorator import view_hidden_problem_permission_required |
21 | 25 |
|
22 | 26 |
|
23 | 27 | class ProblemView(APIView): |
24 | 28 | @method_decorator(parameter_required("pid")) |
| 29 | + @method_decorator(view_hidden_problem_permission_required()) |
25 | 30 | def get(self, request, pid): |
26 | 31 | # Get the content of a problem |
27 | 32 | problem = get_object_or_404(Problem, pid=pid) |
28 | 33 |
|
29 | | - if not problem.enabled and not request.user.has_perm("problem.view_hidden"): |
30 | | - return Response( |
31 | | - {"detail": "Problem is hidden."}, status=status.HTTP_403_FORBIDDEN |
32 | | - ) |
33 | | - |
34 | 34 | ps = ProblemSerializer(problem) |
35 | 35 | return Response({"res": ps.data}, status=status.HTTP_200_OK) |
36 | 36 |
|
@@ -67,14 +67,10 @@ def delete(self, request, pid): |
67 | 67 |
|
68 | 68 | class ProblemDescriptionView(APIView): |
69 | 69 | @method_decorator(parameter_required("pid")) |
| 70 | + @method_decorator(view_hidden_problem_permission_required()) |
70 | 71 | def get(self, request, pid): |
71 | 72 | problem = get_object_or_404(Problem, pid=pid) |
72 | 73 |
|
73 | | - if not problem.enabled and not request.user.has_perm("problem.view_hidden"): |
74 | | - return Response( |
75 | | - {"detail": "Problem is hidden."}, status=status.HTTP_403_FORBIDDEN |
76 | | - ) |
77 | | - |
78 | 74 | pds = ProblemDescriptionSerializer(problem) |
79 | 75 | return Response({"res": pds.data}, status=status.HTTP_200_OK) |
80 | 76 |
|
|
0 commit comments