web/lib/django_extensions/management/commands/passwd.py
changeset 3 526ebd3988b0
equal deleted inserted replaced
1:ebaad720f88b 3:526ebd3988b0
       
     1 from django.core.management.base import BaseCommand, CommandError
       
     2 from django.contrib.auth.models import User
       
     3 import getpass
       
     4 
       
     5 class Command(BaseCommand):
       
     6     help = "Clone of the UNIX program ``passwd'', for django.contrib.auth."
       
     7 
       
     8     requires_model_validation = False
       
     9 
       
    10     def handle(self, *args, **options):
       
    11         if len(args) > 1:
       
    12             raise CommandError("need exactly one or zero arguments for username")
       
    13 
       
    14         if args:
       
    15             username, = args
       
    16         else:
       
    17             username = getpass.getuser()
       
    18 
       
    19         try:
       
    20             u = User.objects.get(username=username)
       
    21         except User.DoesNotExist:
       
    22             raise CommandError("user %s does not exist" % username)
       
    23 
       
    24         print "Changing password for user", u.username
       
    25         p1 = p2 = ""
       
    26         while "" in (p1, p2) or p1 != p2:
       
    27             p1 = getpass.getpass()
       
    28             p2 = getpass.getpass("Password (again): ")
       
    29             if p1 != p2:
       
    30                 print "Passwords do not match, try again"
       
    31             elif "" in (p1, p2):
       
    32                 raise CommandError("aborted")
       
    33 
       
    34         u.set_password(p1)
       
    35         u.save()
       
    36 
       
    37         return "Password changed successfully for user", u.username