get what i want
This commit is contained in:
@@ -126,6 +126,19 @@ class ProblemSerializer(BaseProblemSerializer):
|
||||
"spj_code", "spj_version", "spj_compile_ok")
|
||||
|
||||
|
||||
class ProblemListSerializer(BaseProblemSerializer):
|
||||
template = serializers.SerializerMethodField("get_public_template")
|
||||
|
||||
class Meta:
|
||||
model = Problem
|
||||
exclude = ("test_case_score", "test_case_id", "visible", "is_public",
|
||||
"spj_code", "spj_version", "spj_compile_ok", "description",
|
||||
"input_description", "output_description", "samples", "hint",
|
||||
"source", "spj", "spj_language", "time_limit", "memory_limit",
|
||||
"io_mode", "create_time", "languages", "last_update_time",
|
||||
"total_score", "statistic_info", "share_submission")
|
||||
|
||||
|
||||
class ProblemSafeSerializer(BaseProblemSerializer):
|
||||
template = serializers.SerializerMethodField("get_public_template")
|
||||
|
||||
@@ -203,7 +216,7 @@ class AddContestProblemSerializer(serializers.Serializer):
|
||||
display_id = serializers.CharField()
|
||||
|
||||
|
||||
class ExportProblemRequestSerialzier(serializers.Serializer):
|
||||
class ExportProblemRequestSerializer(serializers.Serializer):
|
||||
problem_id = serializers.ListField(child=serializers.IntegerField(), allow_empty=False)
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ from ..serializers import (CreateContestProblemSerializer, CompileSPJSerializer,
|
||||
CreateProblemSerializer, EditProblemSerializer, EditContestProblemSerializer,
|
||||
ProblemAdminSerializer, TestCaseUploadForm, ContestProblemMakePublicSerializer,
|
||||
AddContestProblemSerializer, ExportProblemSerializer,
|
||||
ExportProblemRequestSerialzier, UploadProblemForm, ImportProblemSerializer,
|
||||
ExportProblemRequestSerializer, UploadProblemForm, ImportProblemSerializer,
|
||||
FPSProblemSerializer)
|
||||
from ..utils import TEMPLATE_BASE, build_problem_template
|
||||
|
||||
@@ -527,7 +527,7 @@ class ExportProblemAPI(APIView):
|
||||
arcname=f"{index}/testcase/{v['output_name']}",
|
||||
compress_type=compression)
|
||||
|
||||
@validate_serializer(ExportProblemRequestSerialzier)
|
||||
@validate_serializer(ExportProblemRequestSerializer)
|
||||
def get(self, request):
|
||||
problems = Problem.objects.filter(id__in=request.data["problem_id"])
|
||||
for problem in problems:
|
||||
|
||||
@@ -3,7 +3,7 @@ from django.db.models import Q, Count
|
||||
from utils.api import APIView
|
||||
from account.decorators import check_contest_permission
|
||||
from ..models import ProblemTag, Problem, ProblemRuleType
|
||||
from ..serializers import ProblemSerializer, TagSerializer, ProblemSafeSerializer
|
||||
from ..serializers import ProblemSerializer, TagSerializer, ProblemSafeSerializer, ProblemListSerializer
|
||||
from contest.models import ContestRuleType
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ class ProblemAPI(APIView):
|
||||
if not limit:
|
||||
return self.error("Limit is needed")
|
||||
|
||||
problems = Problem.objects.select_related("created_by").filter(contest_id__isnull=True, visible=True)
|
||||
problems = Problem.objects.select_related("created_by").filter(contest_id__isnull=True, visible=True).order_by("-create_time")
|
||||
# 按照标签筛选
|
||||
tag_text = request.GET.get("tag")
|
||||
if tag_text:
|
||||
@@ -78,7 +78,7 @@ class ProblemAPI(APIView):
|
||||
if difficulty:
|
||||
problems = problems.filter(difficulty=difficulty)
|
||||
# 根据profile 为做过的题目添加标记
|
||||
data = self.paginate_data(request, problems, ProblemSerializer)
|
||||
data = self.paginate_data(request, problems, ProblemListSerializer)
|
||||
self._add_problem_status(request, data)
|
||||
return self.success(data)
|
||||
|
||||
@@ -113,7 +113,7 @@ class ContestProblemAPI(APIView):
|
||||
|
||||
contest_problems = Problem.objects.select_related("created_by").filter(contest=self.contest, visible=True)
|
||||
if self.contest.problem_details_permission(request.user):
|
||||
data = ProblemSerializer(contest_problems, many=True).data
|
||||
data = ProblemListSerializer(contest_problems, many=True).data
|
||||
self._add_problem_status(request, data)
|
||||
else:
|
||||
data = ProblemSafeSerializer(contest_problems, many=True).data
|
||||
|
||||
Reference in New Issue
Block a user