File indexing completed on 2026-04-27 07:41:41
0001 """
0002 Django management command to create or update the testuser account for testing.
0003 Requires SWF_TESTUSER_PASSWORD environment variable to be set.
0004 """
0005
0006 import os
0007 from django.core.management.base import BaseCommand, CommandError
0008 from django.contrib.auth.models import User
0009
0010
0011 class Command(BaseCommand):
0012 help = 'Create or update testuser account for automated testing'
0013
0014 def add_arguments(self, parser):
0015 parser.add_argument(
0016 '--password',
0017 type=str,
0018 help='Override password (default: use SWF_TESTUSER_PASSWORD env var)',
0019 )
0020
0021 def handle(self, *args, **options):
0022 username = 'testuser'
0023
0024
0025 password = options.get('password') or os.getenv('SWF_TESTUSER_PASSWORD')
0026
0027 if not password:
0028 raise CommandError(
0029 'Password required. Either:\n'
0030 ' 1. Set SWF_TESTUSER_PASSWORD environment variable, or\n'
0031 ' 2. Use --password argument\n'
0032 'Example: export SWF_TESTUSER_PASSWORD="your_secure_password"'
0033 )
0034
0035 try:
0036
0037 user = User.objects.get(username=username)
0038 user.set_password(password)
0039 user.save()
0040 self.stdout.write(
0041 self.style.SUCCESS(f'Updated password for existing user "{username}"')
0042 )
0043 except User.DoesNotExist:
0044
0045 user = User.objects.create_user(
0046 username=username,
0047 password=password,
0048 email='testuser@example.com'
0049 )
0050 self.stdout.write(
0051 self.style.SUCCESS(f'Created new user "{username}"')
0052 )
0053
0054 self.stdout.write(f'Username: {username}')
0055 password_source = "command argument" if options.get('password') else "SWF_TESTUSER_PASSWORD environment variable"
0056 self.stdout.write(f'Password source: {password_source}')