feat: added state to competition response

This commit is contained in:
Андрей Сумин
2025-03-02 02:57:41 +03:00
parent 923fb4d509
commit 00a409317d
2 changed files with 9 additions and 1 deletions
@@ -8,6 +8,14 @@ from apps.competition.models import Competition, State
class CompetitionOut(ModelSchema): class CompetitionOut(ModelSchema):
id: UUID id: UUID
state: Literal["not_started", "started", "finished"]
@staticmethod
def resolve_state(self, context) -> Literal["not_started", "started", "finished"]:
if not (state := State.objects.filter(user=context.get("request").auth, competition=self).first()):
return "not_started"
return state.state
class Meta: class Meta:
model = Competition model = Competition
+1 -1
View File
@@ -60,5 +60,5 @@ class State(BaseModel):
user = models.ForeignKey(User, on_delete=models.CASCADE) user = models.ForeignKey(User, on_delete=models.CASCADE)
competition = models.ForeignKey(Competition, on_delete=models.CASCADE) competition = models.ForeignKey(Competition, on_delete=models.CASCADE)
state = models.CharField(choices=StateChoices.choices, max_length=11) state = models.CharField(choices=StateChoices.choices, max_length=11, default=StateChoices.NOT_STARTED.value)
changed_at = models.DateTimeField(default=datetime.now) changed_at = models.DateTimeField(default=datetime.now)