121 lines
4.5 KiB
Python
121 lines
4.5 KiB
Python
"""
|
|
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))
|
|
|