import re with open('core/admin.py', 'r') as f: lines = f.readlines() new_lines = [] in_process_chunk = False in_cleanup = False for line in lines: # Fix 1: Chunk processing if 'voter = existing_voters.get(vid)' in line and not in_cleanup: new_lines.append(' if defaults.get("voted") is True:\n') new_lines.append(' defaults["target_door_visit"] = False\n') new_lines.append(' defaults["call_queue_status"] = "no_call_required"\n') new_lines.append('\n') new_lines.append(line) continue # Fix 2: Cleanup if '# 1. Update target_door_visit logic' in line: new_lines.append(' # 0. Ensure consistency for voters who voted\n') new_lines.append(' Voter.objects.filter(tenant=tenant, voted=True).update(\n') new_lines.append(' target_door_visit=False,\n') new_lines.append(' call_queue_status="no_call_required"\n') new_lines.append(' )\n') new_lines.append(' ScheduledCall.objects.filter(tenant=tenant, voter__voted=True, status="pending").update(status="cancelled")\n') new_lines.append('\n') new_lines.append(line) continue new_lines.append(line) with open('core/admin.py', 'w') as f: f.writelines(new_lines) print("Updated core/admin.py with voted logic in import chunks and cleanup.")