""" Management command to create test users for dashboard testing. """ from django.core.management.base import BaseCommand from django.contrib.auth import get_user_model from accounts.models import UserProfile from django.utils import timezone User = get_user_model() class Command(BaseCommand): help = 'Create test users (normal, moderator, admin) for dashboard testing' def handle(self, *args, **options): self.stdout.write(self.style.SUCCESS('Creating test users...')) # Create/Update Normal User normal_user, created = User.objects.get_or_create( username='normal_user', defaults={ 'email': 'normal@test.bg', 'role': 'normal', 'is_verified': True, } ) normal_user.set_password('normal123') normal_user.role = 'normal' normal_user.is_verified = True normal_user.save() if not hasattr(normal_user, 'profile'): UserProfile.objects.create( user=normal_user, first_name='Normal', last_name='User', consent_given=True, consent_date=timezone.now() ) self.stdout.write(self.style.SUCCESS( f'{"Created" if created else "Updated"} normal user: {normal_user.username} (password: normal123)' )) # Create/Update Moderator User moderator_user, created = User.objects.get_or_create( username='moderator', defaults={ 'email': 'moderator@test.bg', 'role': 'moderator', 'is_verified': True, } ) moderator_user.set_password('moderator123') moderator_user.role = 'moderator' moderator_user.is_verified = True moderator_user.save() if not hasattr(moderator_user, 'profile'): UserProfile.objects.create( user=moderator_user, first_name='Moderator', last_name='User', consent_given=True, consent_date=timezone.now() ) self.stdout.write(self.style.SUCCESS( f'{"Created" if created else "Updated"} moderator user: {moderator_user.username} (password: moderator123)' )) # Create/Update Admin User admin_user, created = User.objects.get_or_create( username='admin', defaults={ 'email': 'admin@test.bg', 'role': 'admin', 'is_verified': True, 'is_staff': True, 'is_superuser': True, } ) admin_user.set_password('admin123') admin_user.role = 'admin' admin_user.is_verified = True admin_user.is_staff = True admin_user.is_superuser = True admin_user.save() if not hasattr(admin_user, 'profile'): UserProfile.objects.create( user=admin_user, first_name='Admin', last_name='User', consent_given=True, consent_date=timezone.now() ) self.stdout.write(self.style.SUCCESS( f'{"Created" if created else "Updated"} admin user: {admin_user.username} (password: admin123)' )) self.stdout.write(self.style.SUCCESS('\n' + '='*60)) self.stdout.write(self.style.SUCCESS('Test Users Created Successfully!')) self.stdout.write(self.style.SUCCESS('='*60)) self.stdout.write(self.style.SUCCESS('\nLogin Credentials:')) self.stdout.write(self.style.SUCCESS('\n1. Normal User:')) self.stdout.write(self.style.SUCCESS(' Username: normal_user')) self.stdout.write(self.style.SUCCESS(' Password: normal123')) self.stdout.write(self.style.SUCCESS(' Dashboard: /reports/my-reports/')) self.stdout.write(self.style.SUCCESS('\n2. Moderator:')) self.stdout.write(self.style.SUCCESS(' Username: moderator')) self.stdout.write(self.style.SUCCESS(' Password: moderator123')) self.stdout.write(self.style.SUCCESS(' Dashboard: /moderation/dashboard/')) self.stdout.write(self.style.SUCCESS('\n3. Administrator:')) self.stdout.write(self.style.SUCCESS(' Username: admin')) self.stdout.write(self.style.SUCCESS(' Password: admin123')) self.stdout.write(self.style.SUCCESS(' Dashboard: /analytics/dashboard/')) self.stdout.write(self.style.SUCCESS('\n' + '='*60))