mirror of
https://gitlab.com/megazordpobeda/DataRush.git
synced 2026-05-22 23:17:09 +00:00
feat: added state to competition response
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user