diff -r ebaad720f88b -r 526ebd3988b0 web/lib/django_extensions/management/commands/passwd.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django_extensions/management/commands/passwd.py Wed Jan 20 12:37:40 2010 +0100 @@ -0,0 +1,37 @@ +from django.core.management.base import BaseCommand, CommandError +from django.contrib.auth.models import User +import getpass + +class Command(BaseCommand): + help = "Clone of the UNIX program ``passwd'', for django.contrib.auth." + + requires_model_validation = False + + def handle(self, *args, **options): + if len(args) > 1: + raise CommandError("need exactly one or zero arguments for username") + + if args: + username, = args + else: + username = getpass.getuser() + + try: + u = User.objects.get(username=username) + except User.DoesNotExist: + raise CommandError("user %s does not exist" % username) + + print "Changing password for user", u.username + p1 = p2 = "" + while "" in (p1, p2) or p1 != p2: + p1 = getpass.getpass() + p2 = getpass.getpass("Password (again): ") + if p1 != p2: + print "Passwords do not match, try again" + elif "" in (p1, p2): + raise CommandError("aborted") + + u.set_password(p1) + u.save() + + return "Password changed successfully for user", u.username