From 52cb8f72ce03195b7a59549b568844ba147caa4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=A1=D1=83=D0=BC?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Sun, 2 Mar 2025 17:41:56 +0300 Subject: [PATCH] feat: fixed review not adding if reviewer added after creating --- services/backend/apps/review/apps.py | 3 +++ services/backend/apps/review/signals.py | 14 ++++++++++++++ services/backend/apps/task/models.py | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 services/backend/apps/review/signals.py diff --git a/services/backend/apps/review/apps.py b/services/backend/apps/review/apps.py index 27080a3..138bf7f 100644 --- a/services/backend/apps/review/apps.py +++ b/services/backend/apps/review/apps.py @@ -5,3 +5,6 @@ class CoreConfig(AppConfig): name = "apps.review" label = "review" verbose_name = "Проверка" + + def ready(self): + import apps.review.signals diff --git a/services/backend/apps/review/signals.py b/services/backend/apps/review/signals.py new file mode 100644 index 0000000..44da6c2 --- /dev/null +++ b/services/backend/apps/review/signals.py @@ -0,0 +1,14 @@ +# myapp/signals.py +from django.db.models.signals import m2m_changed +from django.dispatch import receiver + +from apps.review.models import Review +from apps.task.models import CompetitionTask, CompetitionTaskSubmission + + +@receiver(m2m_changed, sender=CompetitionTask.reviewers.through) +def print_reviewers(sender, instance, action, **kwargs): + if action in ['post_add', 'post_remove', 'post_clear']: + submissions = CompetitionTaskSubmission.objects.filter(task=instance) + for submission in submissions: + submission.send_on_review() \ No newline at end of file diff --git a/services/backend/apps/task/models.py b/services/backend/apps/task/models.py index 17232b8..dc917ef 100644 --- a/services/backend/apps/task/models.py +++ b/services/backend/apps/task/models.py @@ -182,7 +182,7 @@ class CompetitionTaskSubmission(BaseModel): ] # да это медленно работает и чо for reviewer in reviewers: - Review.objects.create( + Review.objects.update_or_create( reviewer=reviewer, submission=self, )