Skip to content

Commit 3a4cd67

Browse files
committed
fix comma
Signed-off-by: zhangtianli2006 <zhangtianli2006@163.com>
1 parent d5f3446 commit 3a4cd67

File tree

3 files changed

+37
-20
lines changed

3 files changed

+37
-20
lines changed

problem/decorator.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from rest_framework.response import Response
2+
from rest_framework import status
3+
from django.shortcuts import get_object_or_404
4+
from problem.models import Problem
5+
6+
7+
def view_hidden_problem_permission_required():
8+
def decorator(func):
9+
def _wrapped_view(request, pid, *args, **kwargs):
10+
problem = get_object_or_404(Problem, pid=pid)
11+
12+
if not problem.enabled and not request.user.has_perm("problem.view_hidden"):
13+
return Response(
14+
{"detail": "Problem is hidden."}, status=status.HTTP_403_FORBIDDEN
15+
)
16+
17+
return func(request, pid=pid, *args, **kwargs)
18+
19+
return _wrapped_view
20+
21+
return decorator

problem/serializers.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ class ProblemSerializer(serializers.ModelSerializer):
1010
class Meta:
1111
model = Problem
1212
fields = [
13-
"pid",
14-
"date_added",
15-
"title",
13+
"pid",
14+
"date_added",
15+
"title",
1616
"description",
17-
"allow_html",
18-
"tags",
19-
"enabled",
20-
"memory_limit",
17+
"allow_html",
18+
"tags",
19+
"enabled",
20+
"memory_limit",
2121
"time_limit",
2222
]
2323

@@ -32,8 +32,8 @@ class ProblemDescriptionSerializer(serializers.ModelSerializer):
3232
class Meta:
3333
model = Problem
3434
fields = [
35-
"pid",
36-
"description",
35+
"pid",
36+
"description",
3737
]
3838

3939
depth = 0

problem/views.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@
1616
ProblemListSerializer,
1717
TagSerializer,
1818
)
19-
from segmentoj.decorator import syllable_required, parameter_required
19+
from segmentoj.decorator import (
20+
syllable_required,
21+
parameter_required,
22+
)
2023
from status.models import Status
24+
from .decorator import view_hidden_problem_permission_required
2125

2226

2327
class ProblemView(APIView):
2428
@method_decorator(parameter_required("pid"))
29+
@method_decorator(view_hidden_problem_permission_required())
2530
def get(self, request, pid):
2631
# Get the content of a problem
2732
problem = get_object_or_404(Problem, pid=pid)
2833

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-
3434
ps = ProblemSerializer(problem)
3535
return Response({"res": ps.data}, status=status.HTTP_200_OK)
3636

@@ -67,14 +67,10 @@ def delete(self, request, pid):
6767

6868
class ProblemDescriptionView(APIView):
6969
@method_decorator(parameter_required("pid"))
70+
@method_decorator(view_hidden_problem_permission_required())
7071
def get(self, request, pid):
7172
problem = get_object_or_404(Problem, pid=pid)
7273

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-
7874
pds = ProblemDescriptionSerializer(problem)
7975
return Response({"res": pds.data}, status=status.HTTP_200_OK)
8076

0 commit comments

Comments
 (0)