feat: added competition logic

This commit is contained in:
Андрей Сумин
2025-03-01 02:33:06 +03:00
parent 930fb23bbc
commit 999f5b0690
9 changed files with 167 additions and 19 deletions
+22 -10
View File
@@ -1,18 +1,18 @@
from django.db import models
from apps.core.models import BaseModel
class CompetitionType(models.TextChoices):
SOLO = "solo"
class CompetitionParticipationType(models.TextChoices):
EDU = "edu"
COMPETITIVE = "competitive"
from apps.user.models import User
class Competition(BaseModel):
class CompetitionType(models.TextChoices):
SOLO = "solo"
class CompetitionParticipationType(models.TextChoices):
EDU = "edu"
COMPETITIVE = "competitive"
title = models.CharField(max_length=100, verbose_name="Название")
description = models.TextField(verbose_name="Описание")
image_url = models.FileField(
@@ -34,7 +34,19 @@ class Competition(BaseModel):
choices=CompetitionParticipationType.choices,
verbose_name="Тип соревнования",
)
participants = models.ManyToManyField(User, related_name="participants")
class Meta:
verbose_name = "соревнование"
verbose_name_plural = "соревнования"
class State(BaseModel):
class StateChoices(models.TextChoices):
NOT_STARTED = 'not_started'
STARTED = 'started'
FINISHED = 'finished'
user = models.ForeignKey(User, on_delete=models.CASCADE)
competition = models.ForeignKey(Competition, on_delete=models.CASCADE)
state = models.CharField(choices=StateChoices.choices, max_length=11)