Coverage for website/utils/management/commands/createreviewuser.py: 0.00%

30 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1import logging 

2import secrets 

3 

4from django.conf import settings 

5from django.contrib.auth import get_user_model 

6from django.core.management import BaseCommand 

7 

8try: 

9 from faker import Factory as FakerFactory 

10except ImportError as error: 

11 raise ValueError( 

12 f"Have you installed the dev-requirements? Failed importing {error}" 

13 ) from error 

14 

15_faker = FakerFactory.create("nl_NL") 

16logger = logging.getLogger(__name__) 

17 

18_PASSWORD_CHARS = "abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789" 

19 

20 

21class Command(BaseCommand): 

22 """Command to create a user we can use to review.""" 

23 

24 help = "Creates a user for the a review environment" 

25 

26 def add_arguments(self, parser): 

27 parser.add_argument( 

28 "--username", 

29 dest="username", 

30 default=None, 

31 help="Specifies the username for the user.", 

32 ) 

33 parser.add_argument( 

34 "--password", 

35 dest="password", 

36 default=None, 

37 help="Specifies the password for the user.", 

38 ) 

39 

40 def handle(self, *args, **options): 

41 if not settings.DEBUG: 

42 logger.info("Cannot create review user in production mode") 

43 return 

44 

45 username = options.get("username") 

46 password = options.get("password") 

47 

48 if username is None: 

49 username = _faker.user_name() 

50 if password is None: 

51 password = "".join(secrets.choice(_PASSWORD_CHARS) for _ in range(15)) 

52 

53 get_user_model().objects.create_superuser( 

54 username=username, 

55 email=f"{username}@example.com", 

56 password=password, 

57 first_name="Riley", 

58 last_name="Review", 

59 ) 

60 

61 logger.info("Username: %s", username) 

62 logger.info("Password: %s", password)