diff --git a/comment/views/oj.py b/comment/views/oj.py index 13a6b14..776e6b0 100644 --- a/comment/views/oj.py +++ b/comment/views/oj.py @@ -77,11 +77,4 @@ class CommentStatisticsAPI(APIView): difficulty=Round(Avg("difficulty_rating"), 2), comprehensive=Round(Avg("comprehensive_rating"), 2), ) - contents = comments.exclude(content="").values_list("content", flat=True) - return self.success( - { - "count": count, - "rating": rating, - "contents": list(contents), - } - ) + return self.success({"count": count, "rating": rating}) diff --git a/problem/serializers.py b/problem/serializers.py index 2c475f5..92aeba8 100644 --- a/problem/serializers.py +++ b/problem/serializers.py @@ -5,7 +5,11 @@ from django import forms from options.options import SysOptions from utils.api import UsernameSerializer, serializers from utils.constants import Difficulty -from utils.serializers import LanguageNameMultiChoiceField, SPJLanguageNameChoiceField, LanguageNameChoiceField +from utils.serializers import ( + LanguageNameMultiChoiceField, + SPJLanguageNameChoiceField, + LanguageNameChoiceField, +) from .models import Problem, ProblemRuleType, ProblemTag, ProblemIOMode from .utils import parse_problem_template @@ -53,12 +57,16 @@ class CreateOrEditProblemSerializer(serializers.Serializer): output_description = serializers.CharField() samples = serializers.ListField(child=CreateSampleSerializer(), allow_empty=False) test_case_id = serializers.CharField(max_length=32) - test_case_score = serializers.ListField(child=CreateTestCaseScoreSerializer(), allow_empty=True) + test_case_score = serializers.ListField( + child=CreateTestCaseScoreSerializer(), allow_empty=True + ) time_limit = serializers.IntegerField(min_value=1, max_value=1000 * 60) memory_limit = serializers.IntegerField(min_value=1, max_value=1024) languages = LanguageNameMultiChoiceField() template = serializers.DictField(child=serializers.CharField(min_length=1)) - rule_type = serializers.ChoiceField(choices=[ProblemRuleType.ACM, ProblemRuleType.OI]) + rule_type = serializers.ChoiceField( + choices=[ProblemRuleType.ACM, ProblemRuleType.OI] + ) io_mode = ProblemIOModeSerializer() spj = serializers.BooleanField() spj_language = SPJLanguageNameChoiceField(allow_blank=True, allow_null=True) @@ -66,7 +74,9 @@ class CreateOrEditProblemSerializer(serializers.Serializer): spj_compile_ok = serializers.BooleanField(default=False) visible = serializers.BooleanField() difficulty = serializers.ChoiceField(choices=Difficulty.choices()) - tags = serializers.ListField(child=serializers.CharField(max_length=32), allow_empty=False) + tags = serializers.ListField( + child=serializers.CharField(max_length=32), allow_empty=False + ) hint = serializers.CharField(allow_blank=True, allow_null=True) source = serializers.CharField(max_length=256, allow_blank=True, allow_null=True) share_submission = serializers.BooleanField() @@ -116,6 +126,7 @@ class ProblemAdminSerializer(BaseProblemSerializer): model = Problem fields = "__all__" + class ProblemAdminListSerializer(BaseProblemSerializer): class Meta: model = Problem @@ -127,15 +138,32 @@ class ProblemSerializer(BaseProblemSerializer): class Meta: model = Problem - exclude = ("test_case_score", "test_case_id", "visible", "is_public", - "spj_code", "spj_version", "spj_compile_ok") + exclude = ( + "test_case_score", + "test_case_id", + "visible", + "is_public", + "spj_code", + "spj_version", + "spj_compile_ok", + ) class ProblemListSerializer(BaseProblemSerializer): class Meta: model = Problem - fields = ["id", "_id", "title", "submission_number", "accepted_number", - "difficulty", "created_by", "tags", "contest", "rule_type"] + fields = [ + "id", + "_id", + "title", + "submission_number", + "accepted_number", + "difficulty", + "created_by", + "tags", + "contest", + "rule_type", + ] class ProblemSafeSerializer(BaseProblemSerializer): @@ -143,9 +171,19 @@ class ProblemSafeSerializer(BaseProblemSerializer): class Meta: model = Problem - exclude = ("test_case_score", "test_case_id", "visible", "is_public", - "spj_code", "spj_version", "spj_compile_ok", - "difficulty", "submission_number", "accepted_number", "statistic_info") + exclude = ( + "test_case_score", + "test_case_id", + "visible", + "is_public", + "spj_code", + "spj_version", + "spj_compile_ok", + "difficulty", + "submission_number", + "accepted_number", + "statistic_info", + ) class ContestProblemMakePublicSerializer(serializers.Serializer): @@ -184,13 +222,17 @@ class ExportProblemSerializer(serializers.ModelSerializer): return self._html_format_value(obj.hint) def get_test_case_score(self, obj): - return [{"score": item["score"] if obj.rule_type == ProblemRuleType.OI else 100, - "input_name": item["input_name"], "output_name": item["output_name"]} - for item in obj.test_case_score] + return [ + { + "score": item["score"] if obj.rule_type == ProblemRuleType.OI else 100, + "input_name": item["input_name"], + "output_name": item["output_name"], + } + for item in obj.test_case_score + ] def get_spj(self, obj): - return {"code": obj.spj_code, - "language": obj.spj_language} if obj.spj else None + return {"code": obj.spj_code, "language": obj.spj_language} if obj.spj else None def get_template(self, obj): ret = {} @@ -203,10 +245,24 @@ class ExportProblemSerializer(serializers.ModelSerializer): class Meta: model = Problem - fields = ("display_id", "title", "description", "tags", - "input_description", "output_description", - "test_case_score", "hint", "time_limit", "memory_limit", "samples", - "template", "spj", "rule_type", "source", "template") + fields = ( + "display_id", + "title", + "description", + "tags", + "input_description", + "output_description", + "test_case_score", + "hint", + "time_limit", + "memory_limit", + "samples", + "template", + "spj", + "rule_type", + "source", + "template", + ) class AddContestProblemSerializer(serializers.Serializer): @@ -216,7 +272,9 @@ class AddContestProblemSerializer(serializers.Serializer): class ExportProblemRequestSerializer(serializers.Serializer): - problem_id = serializers.ListField(child=serializers.IntegerField(), allow_empty=False) + problem_id = serializers.ListField( + child=serializers.IntegerField(), allow_empty=False + ) class UploadProblemForm(forms.Form): @@ -257,7 +315,9 @@ class ImportProblemSerializer(serializers.Serializer): input_description = FormatValueSerializer() output_description = FormatValueSerializer() hint = FormatValueSerializer() - test_case_score = serializers.ListField(child=TestCaseScoreSerializer(), allow_null=True) + test_case_score = serializers.ListField( + child=TestCaseScoreSerializer(), allow_null=True + ) time_limit = serializers.IntegerField(min_value=1, max_value=60000) memory_limit = serializers.IntegerField(min_value=1, max_value=10240) samples = serializers.ListField(child=CreateSampleSerializer()) @@ -284,6 +344,12 @@ class FPSProblemSerializer(serializers.Serializer): samples = serializers.ListField(child=CreateSampleSerializer()) source = serializers.CharField(max_length=200, allow_blank=True, allow_null=True) spj = SPJSerializer(allow_null=True) - template = serializers.ListField(child=serializers.DictField(), allow_empty=True, allow_null=True) - append = serializers.ListField(child=serializers.DictField(), allow_empty=True, allow_null=True) - prepend = serializers.ListField(child=serializers.DictField(), allow_empty=True, allow_null=True) + template = serializers.ListField( + child=serializers.DictField(), allow_empty=True, allow_null=True + ) + append = serializers.ListField( + child=serializers.DictField(), allow_empty=True, allow_null=True + ) + prepend = serializers.ListField( + child=serializers.DictField(), allow_empty=True, allow_null=True + )