update announcement and problem list serializer
This commit is contained in:
@@ -18,6 +18,14 @@ class AnnouncementSerializer(serializers.ModelSerializer):
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class AnnouncementListSerializer(serializers.ModelSerializer):
|
||||
created_by = UsernameSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Announcement
|
||||
exclude = ['content']
|
||||
|
||||
|
||||
class EditAnnouncementSerializer(serializers.Serializer):
|
||||
id = serializers.IntegerField()
|
||||
title = serializers.CharField(max_length=64)
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
from utils.api import APIView
|
||||
|
||||
from announcement.models import Announcement
|
||||
from announcement.serializers import AnnouncementSerializer
|
||||
from announcement.serializers import AnnouncementSerializer, AnnouncementListSerializer
|
||||
|
||||
|
||||
class AnnouncementAPI(APIView):
|
||||
def get(self, request):
|
||||
id = request.GET.get("id")
|
||||
if id:
|
||||
try:
|
||||
announcement = Announcement.objects.get(id=id, visible=True)
|
||||
return self.success(AnnouncementSerializer(announcement).data)
|
||||
except Announcement.DoesNotExist:
|
||||
return self.error("Announcement does not exist")
|
||||
|
||||
announcements = Announcement.objects.filter(visible=True)
|
||||
return self.success(self.paginate_data(request, announcements, AnnouncementSerializer))
|
||||
return self.success(self.paginate_data(request, announcements, AnnouncementListSerializer))
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user