Files
OnlineJudge/contest/serializers.py
yuetsh 3a9ab83ba5 style: ruff format 全仓库
行宽 180 下把历史遗留的折行表达式合并,无语义改动。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 04:45:26 -06:00

96 lines
3.1 KiB
Python

from utils.api import UsernameSerializer, serializers
from .models import ACMContestRank, Contest, ContestAnnouncement
class CreateConetestSeriaizer(serializers.Serializer):
title = serializers.CharField(max_length=128)
description = serializers.CharField()
tag = serializers.CharField()
start_time = serializers.DateTimeField()
end_time = serializers.DateTimeField()
password = serializers.CharField(allow_blank=True, max_length=32)
visible = serializers.BooleanField()
allowed_ip_ranges = serializers.ListField(child=serializers.CharField(max_length=32), allow_empty=True)
class EditConetestSeriaizer(serializers.Serializer):
id = serializers.IntegerField()
title = serializers.CharField(max_length=128)
description = serializers.CharField()
tag = serializers.CharField()
start_time = serializers.DateTimeField()
end_time = serializers.DateTimeField()
password = serializers.CharField(allow_blank=True, allow_null=True, max_length=32)
visible = serializers.BooleanField()
allowed_ip_ranges = serializers.ListField(child=serializers.CharField(max_length=32))
class ContestAdminSerializer(serializers.ModelSerializer):
created_by = UsernameSerializer()
status = serializers.CharField()
contest_type = serializers.CharField()
class Meta:
model = Contest
fields = "__all__"
class ContestSerializer(ContestAdminSerializer):
class Meta:
model = Contest
exclude = ("password", "visible", "allowed_ip_ranges")
class ContestAnnouncementSerializer(serializers.ModelSerializer):
created_by = UsernameSerializer()
class Meta:
model = ContestAnnouncement
fields = "__all__"
class CreateContestAnnouncementSerializer(serializers.Serializer):
contest_id = serializers.IntegerField()
title = serializers.CharField(max_length=128)
content = serializers.CharField()
visible = serializers.BooleanField()
class EditContestAnnouncementSerializer(serializers.Serializer):
id = serializers.IntegerField()
title = serializers.CharField(max_length=128, required=False)
content = serializers.CharField(required=False, allow_blank=True)
visible = serializers.BooleanField(required=False)
class ContestPasswordVerifySerializer(serializers.Serializer):
contest_id = serializers.IntegerField()
password = serializers.CharField(max_length=30, required=True)
class ACMContestRankSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField()
class Meta:
model = ACMContestRank
fields = "__all__"
def __init__(self, *args, **kwargs):
self.is_contest_admin = kwargs.pop("is_contest_admin", False)
super().__init__(*args, **kwargs)
def get_user(self, obj):
return UsernameSerializer(obj.user, need_real_name=self.is_contest_admin).data
class ACMContesHelperSerializer(serializers.Serializer):
contest_id = serializers.IntegerField()
problem_id = serializers.CharField()
rank_id = serializers.IntegerField()
checked = serializers.BooleanField()
class ContestCloneSerializer(serializers.Serializer):
contest_id = serializers.IntegerField()