equal
deleted
inserted
replaced
|
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 |