37768-vm/populate_engagement.py
Flatlogic Bot d834885e59 .1
2026-01-24 03:35:37 +00:00

49 lines
1.7 KiB
Python

import os
import django
import random
from datetime import date, timedelta
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
django.setup()
from core.models import Voter, Donation, EventParticipation
def populate_engagement_data():
voters = Voter.objects.all()
event_types = ['Town Hall', 'Neighborhood Walk', 'Phone Bank', 'Fundraiser Dinner', 'Rally']
event_descriptions = [
'Discussed local infrastructure issues.',
'Canvassed the precinct with volunteers.',
'Made 50 calls to likely voters.',
'Annual gala for the candidate.',
'Major campaign kickoff event.'
]
for voter in voters:
# 30% chance of having donations
if random.random() < 0.3:
num_donations = random.randint(1, 4)
for _ in range(num_donations):
Donation.objects.create(
voter=voter,
donation_date=date.today() - timedelta(days=random.randint(1, 365)),
amount=random.choice([10, 25, 50, 100, 250, 500])
)
# 40% chance of having events
if random.random() < 0.4:
num_events = random.randint(1, 3)
for _ in range(num_events):
EventParticipation.objects.create(
voter=voter,
event_date=date.today() - timedelta(days=random.randint(1, 180)),
event_type=random.choice(event_types),
description=random.choice(event_descriptions)
)
print(f"Populated donations and events for {voters.count()} voters.")
if __name__ == '__main__':
populate_engagement_data()