class CreateEditWebsiteConfigSerializer(serializers.Serializer): # 创建编辑网站配置类 website_base_url = serializers.CharField(max_length=128) website_name = serializers.CharField(max_length=64) website_name_shortcut = serializers.CharField(max_length=64) website_footer = serializers.CharField(max_length=1024 * 1024) allow_register = serializers.BooleanField() submission_list_show_all = serializers.BooleanField()
class EditUserSerializer(serializers.Serializer): id = serializers.IntegerField() username = serializers.CharField(max_length=32) real_name = serializers.CharField(max_length=32, allow_blank=True, allow_null=True) password = serializers.CharField(min_length=6, allow_blank=True, required=False, default=None) email = serializers.EmailField(max_length=64) admin_type = serializers.ChoiceField(choices=(AdminType.REGULAR_USER, AdminType.ADMIN, AdminType.SUPER_ADMIN)) problem_permission = serializers.ChoiceField(choices=(ProblemPermission.NONE, ProblemPermission.OWN, ProblemPermission.ALL)) open_api = serializers.BooleanField() two_factor_auth = serializers.BooleanField() is_disabled = serializers.BooleanField()
class CreateContestSerializer(serializers.Serializer): # 创建比赛 title = serializers.CharField(max_length=128) description = serializers.CharField() start_time = serializers.DateTimeField() end_time = serializers.DateTimeField() rule_type = serializers.ChoiceField( choices=[ContestRuleType.ACM, ContestRuleType.OI]) password = serializers.CharField(allow_blank=True, max_length=32) visible = serializers.BooleanField() real_time_rank = serializers.BooleanField() allowed_ip_ranges = serializers.ListField( child=serializers.CharField(max_length=32), allow_empty=True)
class EditContestSerializer(serializers.Serializer): # 编辑提交比赛信息 id = serializers.IntegerField() title = serializers.CharField(max_length=128) description = 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() real_time_rank = serializers.BooleanField() allowed_ip_ranges = serializers.ListField(child=serializers.CharField( max_length=32))
class EditSMTPConfigSerializer(serializers.Serializer): # 编辑邮件配置类 server = serializers.CharField(max_length=128) port = serializers.IntegerField(default=25) email = serializers.CharField(max_length=256) password = serializers.CharField(max_length=128, required=False, allow_null=True, allow_blank=True) tls = serializers.BooleanField()
class CreateOrEditProblemSerializer(serializers.Serializer): # 创建或者编辑问题,此类可以作为基类 _id = serializers.CharField(max_length=32, allow_blank=True, allow_null=True) title = serializers.CharField(max_length=1024) description = serializers.CharField() input_description = serializers.CharField() 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) 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]) spj = serializers.BooleanField() spj_language = SPJLanguageNameChoiceField(allow_blank=True, allow_null=True) spj_code = serializers.CharField(allow_blank=True, allow_null=True) 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) hint = serializers.CharField(allow_blank=True, allow_null=True) source = serializers.CharField(max_length=256, allow_blank=True, allow_null=True)
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 CreateContestAnnouncementSerializer(serializers.Serializer): # 创建比赛通知 contest_id = serializers.IntegerField() title = serializers.CharField(max_length=128) content = serializers.CharField() visible = serializers.BooleanField()
class ACMContestHelperSerializer(serializers.Serializer): # 比赛帮助类 contest_id = serializers.IntegerField() problem_id = serializers.CharField() rank_id = serializers.IntegerField() checked = serializers.BooleanField()
class ShareSubmissionSerializer(serializers.Serializer): # 分享 id = serializers.CharField() shared = serializers.BooleanField()
class CreateAnnouncementSerializer(serializers.Serializer): # 创建通知 title = serializers.CharField(max_length=64) content = serializers.CharField(max_length=1024 * 1024 * 8) visible = serializers.BooleanField()
class EditAnnouncementSerializer(serializers.Serializer): # 编辑通知 id = serializers.IntegerField() title = serializers.CharField(max_length=64) content = serializers.CharField(max_length=1024 * 1024 * 8) visible = serializers.BooleanField()
class EditJudgeServerSerializer(serializers.Serializer): # 编辑判题服务器类 id = serializers.IntegerField() is_disabled = serializers.BooleanField()