[docs]classCommand(BaseCommand):help="Find duplicate signups in the system that violate the one-signup-per-block constraint."defadd_arguments(self,parser):parser.add_argument("--fix",action="store_true",dest="fix",default=False,help="Fix.")defhandle(self,*args,**options):signup_list=collections.defaultdict(int)forxinEighthSignup.objects.all().prefetch_related("scheduled_activity__block"):signup_list[(x.user_id,x.scheduled_activity.block_id)]+=1duplicates=[signupforsignup,countinsignup_list.items()ifcount>1]ifnotduplicates:self.stdout.write("No duplicate signups found.")returnforuid,bidinduplicates:su=EighthSignup.objects.filter(user_id=uid,scheduled_activity__block_id=bid)self.stdout.write(f"Duplicate: {uid}{bid}")self.stdout.write("Scheduled activities: %s"%su)ifoptions["fix"]:ifsu[0].scheduled_activity.activity.both_blocks:sibling=su[0].scheduled_activity.get_both_blocks_sibling()ifEighthSignup.objects.filter(user_id=uid,scheduled_activity=sibling).exists():self.stdout.write(f"Deleted su1 {su[1]}")su[1].delete()elifsu[1].scheduled_activity.activity.both_blocks:sibling=su[1].scheduled_activity.get_both_blocks_sibling()ifEighthSignup.objects.filter(user_id=uid,scheduled_activity=sibling).exists():self.stdout.write(f"Deleted su0 {su[0]}")su[0].delete()