From 7019d271842a25eb81d642c9d56d0c225bc2955b Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Fri, 29 Nov 2024 12:49:28 +0500 Subject: [PATCH] submission count fixed for multi-task competitions, updated delete multiple function to trigger modal's delete method, updated count script to count only parent submissions --- src/apps/api/views/submissions.py | 3 ++- src/apps/competitions/models.py | 3 ++- src/apps/competitions/submission_participant_counts.py | 5 ++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/apps/api/views/submissions.py b/src/apps/api/views/submissions.py index 6c2489245..8321de927 100644 --- a/src/apps/api/views/submissions.py +++ b/src/apps/api/views/submissions.py @@ -184,7 +184,8 @@ def delete_many(self, request, *args, **kwargs): qs = self.get_queryset() if not qs: return Response({'Submission search returned empty'}, status=status.HTTP_404_NOT_FOUND) - qs.delete() + for submission in qs: + submission.delete() # This will trigger the model's `delete` method return Response({}) def get_renderer_context(self): diff --git a/src/apps/competitions/models.py b/src/apps/competitions/models.py index 5bd492c31..adefa962d 100644 --- a/src/apps/competitions/models.py +++ b/src/apps/competitions/models.py @@ -615,7 +615,8 @@ def save(self, ignore_submission_limit=False, **kwargs): super().save(**kwargs) - if is_new: + # Only increment when a submission is parent (do not count child submissions) + if is_new and self.parent is None: # Increment the submissions_count for the competition self.phase.competition.submissions_count += 1 self.phase.competition.save() diff --git a/src/apps/competitions/submission_participant_counts.py b/src/apps/competitions/submission_participant_counts.py index 610eb2140..dc6788c36 100644 --- a/src/apps/competitions/submission_participant_counts.py +++ b/src/apps/competitions/submission_participant_counts.py @@ -14,8 +14,7 @@ Import and call the function ``` - from competitions.submission_participant_counts import compute_submissions_p -articipants_counts + from competitions.submission_participant_counts import compute_submissions_participants_counts compute_submissions_participants_counts() ``` """ @@ -36,7 +35,7 @@ def compute_submissions_participants_counts(): phases = Phase.objects.filter(competition=competition) # Count submissions across all phases of the competition - submissions_count = Submission.objects.filter(phase__in=phases).count() + submissions_count = Submission.objects.filter(phase__in=phases, parent__isnull=True).count() # Update the competition fields competition.participants_count = participants_count