django.contrib.auth.management.commands.changepassword: 39 total statements, 0.0% covered

Generated: Wed 2013-03-13 10:33 CET

Source file: /media/Envs/Envs/filer-gallery/lib/python2.7/site-packages/django/contrib/auth/management/commands/changepassword.py

Stats: 0 executed, 34 missed, 5 excluded, 17 ignored

  1. import getpass
  2. from optparse import make_option
  3. from django.core.management.base import BaseCommand, CommandError
  4. from django.contrib.auth.models import User
  5. from django.db import DEFAULT_DB_ALIAS
  6. class Command(BaseCommand):
  7. option_list = BaseCommand.option_list + (
  8. make_option('--database', action='store', dest='database',
  9. default=DEFAULT_DB_ALIAS, help='Specifies the database to use. Default is "default".'),
  10. )
  11. help = "Change a user's password for django.contrib.auth."
  12. requires_model_validation = False
  13. def _get_pass(self, prompt="Password: "):
  14. p = getpass.getpass(prompt=prompt)
  15. if not p:
  16. raise CommandError("aborted")
  17. return p
  18. def handle(self, *args, **options):
  19. if len(args) > 1:
  20. raise CommandError("need exactly one or zero arguments for username")
  21. if args:
  22. username, = args
  23. else:
  24. username = getpass.getuser()
  25. try:
  26. u = User.objects.using(options.get('database')).get(username=username)
  27. except User.DoesNotExist:
  28. raise CommandError("user '%s' does not exist" % username)
  29. self.stdout.write("Changing password for user '%s'\n" % u.username)
  30. MAX_TRIES = 3
  31. count = 0
  32. p1, p2 = 1, 2 # To make them initially mismatch.
  33. while p1 != p2 and count < MAX_TRIES:
  34. p1 = self._get_pass()
  35. p2 = self._get_pass("Password (again): ")
  36. if p1 != p2:
  37. self.stdout.write("Passwords do not match. Please try again.\n")
  38. count = count + 1
  39. if count == MAX_TRIES:
  40. raise CommandError("Aborting password change for user '%s' after %s attempts" % (username, count))
  41. u.set_password(p1)
  42. u.save()
  43. return "Password changed successfully for user '%s'" % u.username