比赛添加标签

This commit is contained in:
yuetsh
2024-07-01 15:46:15 +08:00
committed by yuetsh
parent c497d511dc
commit 77cf8db4c4
4 changed files with 26 additions and 1 deletions

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.0.6 on 2024-07-01 08:08
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('contest', '0011_alter_acmcontestrank_submission_info_and_more'),
]
operations = [
migrations.AddField(
model_name='contest',
name='tag',
field=models.TextField(default=''),
preserve_default=False,
),
]

View File

@@ -11,6 +11,7 @@ from utils.models import RichTextField
class Contest(models.Model): class Contest(models.Model):
title = models.TextField() title = models.TextField()
description = RichTextField() description = RichTextField()
tag = models.TextField()
# show real time rank or cached rank # show real time rank or cached rank
real_time_rank = models.BooleanField() real_time_rank = models.BooleanField()
password = models.TextField(null=True) password = models.TextField(null=True)

View File

@@ -7,6 +7,7 @@ from .models import ACMContestRank, OIContestRank
class CreateConetestSeriaizer(serializers.Serializer): class CreateConetestSeriaizer(serializers.Serializer):
title = serializers.CharField(max_length=128) title = serializers.CharField(max_length=128)
description = serializers.CharField() description = serializers.CharField()
tag = serializers.CharField()
start_time = serializers.DateTimeField() start_time = serializers.DateTimeField()
end_time = serializers.DateTimeField() end_time = serializers.DateTimeField()
rule_type = serializers.ChoiceField(choices=[ContestRuleType.ACM, ContestRuleType.OI]) rule_type = serializers.ChoiceField(choices=[ContestRuleType.ACM, ContestRuleType.OI])
@@ -20,6 +21,7 @@ class EditConetestSeriaizer(serializers.Serializer):
id = serializers.IntegerField() id = serializers.IntegerField()
title = serializers.CharField(max_length=128) title = serializers.CharField(max_length=128)
description = serializers.CharField() description = serializers.CharField()
tag = serializers.CharField()
start_time = serializers.DateTimeField() start_time = serializers.DateTimeField()
end_time = serializers.DateTimeField() end_time = serializers.DateTimeField()
password = serializers.CharField(allow_blank=True, allow_null=True, max_length=32) password = serializers.CharField(allow_blank=True, allow_null=True, max_length=32)

View File

@@ -52,10 +52,13 @@ class ContestListAPI(APIView):
keyword = request.GET.get("keyword") keyword = request.GET.get("keyword")
rule_type = request.GET.get("rule_type") rule_type = request.GET.get("rule_type")
status = request.GET.get("status") status = request.GET.get("status")
tag = request.GET.get("tag")
if keyword: if keyword:
contests = contests.filter(title__contains=keyword) contests = contests.filter(title__icontains=keyword)
if rule_type: if rule_type:
contests = contests.filter(rule_type=rule_type) contests = contests.filter(rule_type=rule_type)
if tag:
contests = contests.filter(tag=tag)
if status: if status:
cur = now() cur = now()
if status == ContestStatus.CONTEST_NOT_START: if status == ContestStatus.CONTEST_NOT_START: