From 36c71fcab6fac044b70395461894aa43e7baf298 Mon Sep 17 00:00:00 2001 From: Seyed Alireza Hashemi Date: Mon, 20 Jan 2025 01:42:22 +0330 Subject: [PATCH] Fix: add a command for deleting ashbaria redundant survey responses --- ...ashbaria_redundant_survay_answer_sheets.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 apps/fsm/management/commands/delete_ashbaria_redundant_survay_answer_sheets.py diff --git a/apps/fsm/management/commands/delete_ashbaria_redundant_survay_answer_sheets.py b/apps/fsm/management/commands/delete_ashbaria_redundant_survay_answer_sheets.py new file mode 100644 index 00000000..c1d84462 --- /dev/null +++ b/apps/fsm/management/commands/delete_ashbaria_redundant_survay_answer_sheets.py @@ -0,0 +1,32 @@ +from django.core.management.base import BaseCommand + +from apps.fsm.models.form import AnswerSheet + + +class Command(BaseCommand): + help = 'Remove duplicate AnswerSheets for a given form_id, keeping only the first one' + + def add_arguments(self, parser): + parser.add_argument('--formid', type=int, help='Form ID to process') + + def handle(self, *args, **options): + form_id = options['formid'] + if not form_id: + self.stdout.write(self.style.ERROR( + 'Please provide a form ID using --formid')) + return + + answer_sheets = AnswerSheet.objects.filter( + form_id=form_id).order_by('user_id', 'created_at') + users_processed = set() + deleted_count = 0 + + for answer_sheet in answer_sheets: + if answer_sheet.user_id in users_processed: + answer_sheet.delete() + deleted_count += 1 + else: + users_processed.add(answer_sheet.user_id) + + self.stdout.write(self.style.SUCCESS( + f'Successfully deleted {deleted_count} duplicate AnswerSheets for form ID {form_id}'))