比赛添加标签
This commit is contained in:
19
contest/migrations/0012_contest_tag.py
Normal file
19
contest/migrations/0012_contest_tag.py
Normal 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,
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user