Ticket #6273: 6273_django_auth_passwd_command_r2.diff

File 6273_django_auth_passwd_command_r2.diff, 1.5 KB (added by Justin Lilly, 15 years ago)

Applies cleanly to r9478 -- Removed all changes except passwd.py which works.

  • django/contrib/auth/management/commands/passwd.py

     
     1from django.core.management.base import BaseCommand, CommandError
     2from django.contrib.auth.models import User
     3import getpass
     4
     5class Command(BaseCommand):
     6    help = "Clone of the UNIX program ``passwd'', for django.contrib.auth."
     7
     8    requires_model_validation = False
     9
     10    def _get_pass(self, prompt="Password: "):
     11        p = getpass.getpass(prompt=prompt)
     12        if not p:
     13            raise CommandError("aborted")
     14        return p
     15
     16    def handle(self, *args, **options):
     17        if len(args) > 1:
     18            raise CommandError("need exactly one or zero arguments for username")
     19
     20        if args:
     21            username, = args
     22        else:
     23            username = getpass.getuser()
     24
     25        try:
     26            u = User.objects.get(username=username)
     27        except User.DoesNotExist:
     28            raise CommandError("user %s does not exist" % username)
     29
     30        print "Changing password for user", u.username
     31        p1, p2 = 1, 2  # To make them mismatch.
     32        while p1 != p2:
     33            p1 = self._get_pass()
     34            p2 = self._get_pass("Password (again): ")
     35            if p1 != p2:
     36                print "Passwords do not match, try again"
     37
     38        u.set_password(p1)
     39        u.save()
     40
     41        return "Password changed successfully for user " + u.username
Back to Top