update announcement and problem list serializer

This commit is contained in:
yuetsh
2024-06-12 10:05:26 +08:00
parent 5a8fb8d81a
commit 8a47c6e0ef
4 changed files with 29 additions and 14 deletions

View File

@@ -116,6 +116,11 @@ class ProblemAdminSerializer(BaseProblemSerializer):
model = Problem
fields = "__all__"
class ProblemAdminListSerializer(BaseProblemSerializer):
class Meta:
model = Problem
fields = ["_id", "id", "title", "created_by", "visible", "create_time"]
class ProblemSerializer(BaseProblemSerializer):
template = serializers.SerializerMethodField("get_public_template")
@@ -127,16 +132,10 @@ class ProblemSerializer(BaseProblemSerializer):
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")
fields = ["id", "_id", "title", "submission_number", "accepted_number",
"difficulty", "created_by", "tags"]
class ProblemSafeSerializer(BaseProblemSerializer):

View File

@@ -24,8 +24,8 @@ from utils.tasks import delete_files
from ..models import Problem, ProblemRuleType, ProblemTag
from ..serializers import (CreateContestProblemSerializer, CompileSPJSerializer,
CreateProblemSerializer, EditProblemSerializer, EditContestProblemSerializer,
ProblemAdminSerializer, TestCaseUploadForm, ContestProblemMakePublicSerializer,
AddContestProblemSerializer, ExportProblemSerializer,
ProblemAdminSerializer, ProblemAdminListSerializer, TestCaseUploadForm,
ContestProblemMakePublicSerializer, AddContestProblemSerializer, ExportProblemSerializer,
ExportProblemRequestSerializer, UploadProblemForm, ImportProblemSerializer,
FPSProblemSerializer)
from ..utils import TEMPLATE_BASE, build_problem_template
@@ -249,7 +249,7 @@ class ProblemAPI(ProblemBase):
problems = problems.filter(Q(title__icontains=keyword) | Q(_id__icontains=keyword))
if not user.can_mgmt_all_problem():
problems = problems.filter(created_by=user)
return self.success(self.paginate_data(request, problems, ProblemAdminSerializer))
return self.success(self.paginate_data(request, problems, ProblemAdminListSerializer))
@problem_permission_required
@validate_serializer(EditProblemSerializer)
@@ -370,7 +370,7 @@ class ContestProblemAPI(ProblemBase):
keyword = request.GET.get("keyword")
if keyword:
problems = problems.filter(title__contains=keyword)
return self.success(self.paginate_data(request, problems, ProblemAdminSerializer))
return self.success(self.paginate_data(request, problems, ProblemAdminListSerializer))
@validate_serializer(EditContestProblemSerializer)
def put(self, request):