update announcement and problem list serializer
This commit is contained in:
@@ -18,6 +18,14 @@ class AnnouncementSerializer(serializers.ModelSerializer):
|
|||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
|
||||||
|
|
||||||
|
class AnnouncementListSerializer(serializers.ModelSerializer):
|
||||||
|
created_by = UsernameSerializer()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Announcement
|
||||||
|
exclude = ['content']
|
||||||
|
|
||||||
|
|
||||||
class EditAnnouncementSerializer(serializers.Serializer):
|
class EditAnnouncementSerializer(serializers.Serializer):
|
||||||
id = serializers.IntegerField()
|
id = serializers.IntegerField()
|
||||||
title = serializers.CharField(max_length=64)
|
title = serializers.CharField(max_length=64)
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
from utils.api import APIView
|
from utils.api import APIView
|
||||||
|
|
||||||
from announcement.models import Announcement
|
from announcement.models import Announcement
|
||||||
from announcement.serializers import AnnouncementSerializer
|
from announcement.serializers import AnnouncementSerializer, AnnouncementListSerializer
|
||||||
|
|
||||||
|
|
||||||
class AnnouncementAPI(APIView):
|
class AnnouncementAPI(APIView):
|
||||||
def get(self, request):
|
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)
|
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
|
model = Problem
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
|
||||||
|
class ProblemAdminListSerializer(BaseProblemSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Problem
|
||||||
|
fields = ["_id", "id", "title", "created_by", "visible", "create_time"]
|
||||||
|
|
||||||
|
|
||||||
class ProblemSerializer(BaseProblemSerializer):
|
class ProblemSerializer(BaseProblemSerializer):
|
||||||
template = serializers.SerializerMethodField("get_public_template")
|
template = serializers.SerializerMethodField("get_public_template")
|
||||||
@@ -127,16 +132,10 @@ class ProblemSerializer(BaseProblemSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class ProblemListSerializer(BaseProblemSerializer):
|
class ProblemListSerializer(BaseProblemSerializer):
|
||||||
template = serializers.SerializerMethodField("get_public_template")
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Problem
|
model = Problem
|
||||||
exclude = ("test_case_score", "test_case_id", "visible", "is_public",
|
fields = ["id", "_id", "title", "submission_number", "accepted_number",
|
||||||
"spj_code", "spj_version", "spj_compile_ok", "description",
|
"difficulty", "created_by", "tags"]
|
||||||
"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):
|
class ProblemSafeSerializer(BaseProblemSerializer):
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ from utils.tasks import delete_files
|
|||||||
from ..models import Problem, ProblemRuleType, ProblemTag
|
from ..models import Problem, ProblemRuleType, ProblemTag
|
||||||
from ..serializers import (CreateContestProblemSerializer, CompileSPJSerializer,
|
from ..serializers import (CreateContestProblemSerializer, CompileSPJSerializer,
|
||||||
CreateProblemSerializer, EditProblemSerializer, EditContestProblemSerializer,
|
CreateProblemSerializer, EditProblemSerializer, EditContestProblemSerializer,
|
||||||
ProblemAdminSerializer, TestCaseUploadForm, ContestProblemMakePublicSerializer,
|
ProblemAdminSerializer, ProblemAdminListSerializer, TestCaseUploadForm,
|
||||||
AddContestProblemSerializer, ExportProblemSerializer,
|
ContestProblemMakePublicSerializer, AddContestProblemSerializer, ExportProblemSerializer,
|
||||||
ExportProblemRequestSerializer, UploadProblemForm, ImportProblemSerializer,
|
ExportProblemRequestSerializer, UploadProblemForm, ImportProblemSerializer,
|
||||||
FPSProblemSerializer)
|
FPSProblemSerializer)
|
||||||
from ..utils import TEMPLATE_BASE, build_problem_template
|
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))
|
problems = problems.filter(Q(title__icontains=keyword) | Q(_id__icontains=keyword))
|
||||||
if not user.can_mgmt_all_problem():
|
if not user.can_mgmt_all_problem():
|
||||||
problems = problems.filter(created_by=user)
|
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
|
@problem_permission_required
|
||||||
@validate_serializer(EditProblemSerializer)
|
@validate_serializer(EditProblemSerializer)
|
||||||
@@ -370,7 +370,7 @@ class ContestProblemAPI(ProblemBase):
|
|||||||
keyword = request.GET.get("keyword")
|
keyword = request.GET.get("keyword")
|
||||||
if keyword:
|
if keyword:
|
||||||
problems = problems.filter(title__contains=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)
|
@validate_serializer(EditContestProblemSerializer)
|
||||||
def put(self, request):
|
def put(self, request):
|
||||||
|
|||||||
Reference in New Issue
Block a user