change enum
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# Generated by Django 6.0.4 on 2026-05-09 08:18
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("contest", "0003_acmcontestrank_acm_rank_contest_user_idx_and_more"),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterUniqueTogether(
|
||||
name="acmcontestrank",
|
||||
unique_together=set(),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="oicontestrank",
|
||||
unique_together=set(),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="contest",
|
||||
name="rule_type",
|
||||
field=models.TextField(choices=[("ACM", "ACM"), ("OI", "OI")]),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="acmcontestrank",
|
||||
constraint=models.UniqueConstraint(fields=("user", "contest"), name="unique_acm_rank_user_contest"),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="oicontestrank",
|
||||
constraint=models.UniqueConstraint(fields=("user", "contest"), name="unique_oi_rank_user_contest"),
|
||||
),
|
||||
]
|
||||
@@ -15,8 +15,7 @@ class Contest(models.Model):
|
||||
# show real time rank or cached rank
|
||||
real_time_rank = models.BooleanField()
|
||||
password = models.TextField(null=True)
|
||||
# enum of ContestRuleType
|
||||
rule_type = models.TextField()
|
||||
rule_type = models.TextField(choices=ContestRuleType.choices)
|
||||
start_time = models.DateTimeField()
|
||||
end_time = models.DateTimeField()
|
||||
create_time = models.DateTimeField(auto_now_add=True)
|
||||
@@ -46,13 +45,7 @@ class Contest(models.Model):
|
||||
|
||||
# 是否有权查看problem 的一些统计信息 诸如submission_number, accepted_number 等
|
||||
def problem_details_permission(self, user):
|
||||
return (
|
||||
self.rule_type == ContestRuleType.ACM
|
||||
or self.status == ContestStatus.CONTEST_ENDED
|
||||
or user.is_authenticated
|
||||
and user.is_contest_admin(self)
|
||||
or self.real_time_rank
|
||||
)
|
||||
return self.rule_type == ContestRuleType.ACM or self.status == ContestStatus.CONTEST_ENDED or user.is_authenticated and user.is_contest_admin(self) or self.real_time_rank
|
||||
|
||||
class Meta:
|
||||
db_table = "contest"
|
||||
@@ -78,10 +71,11 @@ class ACMContestRank(AbstractContestRank):
|
||||
|
||||
class Meta:
|
||||
db_table = "acm_contest_rank"
|
||||
unique_together = (("user", "contest"),)
|
||||
constraints = [
|
||||
models.UniqueConstraint(fields=["user", "contest"], name="unique_acm_rank_user_contest"),
|
||||
]
|
||||
indexes = [
|
||||
models.Index(fields=["contest", "accepted_number", "total_time"],
|
||||
name="acm_rank_order_idx"),
|
||||
models.Index(fields=["contest", "accepted_number", "total_time"], name="acm_rank_order_idx"),
|
||||
models.Index(fields=["contest", "user"], name="acm_rank_contest_user_idx"),
|
||||
]
|
||||
|
||||
@@ -94,7 +88,9 @@ class OIContestRank(AbstractContestRank):
|
||||
|
||||
class Meta:
|
||||
db_table = "oi_contest_rank"
|
||||
unique_together = (("user", "contest"),)
|
||||
constraints = [
|
||||
models.UniqueConstraint(fields=["user", "contest"], name="unique_oi_rank_user_contest"),
|
||||
]
|
||||
indexes = [
|
||||
models.Index(fields=["contest", "total_score"], name="oi_rank_order_idx"),
|
||||
models.Index(fields=["contest", "user"], name="oi_rank_contest_user_idx"),
|
||||
|
||||
@@ -9,7 +9,7 @@ class CreateConetestSeriaizer(serializers.Serializer):
|
||||
tag = serializers.CharField()
|
||||
start_time = serializers.DateTimeField()
|
||||
end_time = serializers.DateTimeField()
|
||||
rule_type = serializers.ChoiceField(choices=[ContestRuleType.ACM, ContestRuleType.OI])
|
||||
rule_type = serializers.ChoiceField(choices=ContestRuleType.choices)
|
||||
password = serializers.CharField(allow_blank=True, max_length=32)
|
||||
visible = serializers.BooleanField()
|
||||
real_time_rank = serializers.BooleanField()
|
||||
|
||||
Reference in New Issue
Block a user