This commit is contained in:
ITQ
2025-03-04 04:23:02 +03:00
parent 60e42964fc
commit af9511d81d
12 changed files with 70 additions and 55 deletions
+1 -1
View File
@@ -7,4 +7,4 @@ class CompetitionsConfig(AppConfig):
verbose_name = "Соревнование"
def ready(self):
import apps.competition.signals
pass
+12 -4
View File
@@ -3,15 +3,23 @@ from django.dispatch import receiver
from apps.achievement.models import Achievement, UserAchievement
from apps.competition.models import State
from apps.user.models import User
@receiver(post_save, sender=State)
def assign_start_competition_achievement(sender, instance, created, **kwargs):
if created:
if State.objects.filter(user=instance.user, state=State.StateChoices.STARTED.value).count() == 1 \
and not State.objects.filter(user=instance.user, state=State.StateChoices.FINISHED.value).exists():
start_competition_achievement = Achievement.objects.get(slug="start_competition")
if (
State.objects.filter(
user=instance.user, state=State.StateChoices.STARTED.value
).count()
== 1
and not State.objects.filter(
user=instance.user, state=State.StateChoices.FINISHED.value
).exists()
):
start_competition_achievement = Achievement.objects.get(
slug="start_competition"
)
UserAchievement.objects.create(
user=instance.user, achievement=start_competition_achievement
)