Ticket #6273: django_auth_passwd_command.diff
File django_auth_passwd_command.diff, 6.7 KB (added by , 17 years ago) |
---|
-
django/contrib/auth/management.py
1 """2 Creates permissions for all installed apps that need permissions.3 """4 5 from django.dispatch import dispatcher6 from django.db.models import get_models, signals7 from django.contrib.auth import models as auth_app8 9 def _get_permission_codename(action, opts):10 return u'%s_%s' % (action, opts.object_name.lower())11 12 def _get_all_permissions(opts):13 "Returns (codename, name) for all permissions in the given opts."14 perms = []15 for action in ('add', 'change', 'delete'):16 perms.append((_get_permission_codename(action, opts), u'Can %s %s' % (action, opts.verbose_name_raw)))17 return perms + list(opts.permissions)18 19 def create_permissions(app, created_models, verbosity):20 from django.contrib.contenttypes.models import ContentType21 from django.contrib.auth.models import Permission22 app_models = get_models(app)23 if not app_models:24 return25 for klass in app_models:26 ctype = ContentType.objects.get_for_model(klass)27 for codename, name in _get_all_permissions(klass._meta):28 p, created = Permission.objects.get_or_create(codename=codename, content_type__pk=ctype.id,29 defaults={'name': name, 'content_type': ctype})30 if created and verbosity >= 2:31 print "Adding permission '%s'" % p32 33 def create_superuser(app, created_models, verbosity, **kwargs):34 from django.contrib.auth.models import User35 from django.contrib.auth.create_superuser import createsuperuser as do_create36 if User in created_models and kwargs.get('interactive', True):37 msg = "\nYou just installed Django's auth system, which means you don't have " \38 "any superusers defined.\nWould you like to create one now? (yes/no): "39 confirm = raw_input(msg)40 while 1:41 if confirm not in ('yes', 'no'):42 confirm = raw_input('Please enter either "yes" or "no": ')43 continue44 if confirm == 'yes':45 do_create()46 break47 48 dispatcher.connect(create_permissions, signal=signals.post_syncdb)49 dispatcher.connect(create_superuser, sender=auth_app, signal=signals.post_syncdb) -
django/contrib/auth/management/commands/__init__.py
1 """Placeholder file to make directory a package.""" -
django/contrib/auth/management/commands/passwd.py
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 _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 -
django/contrib/auth/management/__init__.py
1 """ 2 Creates permissions for all installed apps that need permissions. 3 """ 4 5 from django.dispatch import dispatcher 6 from django.db.models import get_models, signals 7 from django.contrib.auth import models as auth_app 8 9 def _get_permission_codename(action, opts): 10 return u'%s_%s' % (action, opts.object_name.lower()) 11 12 def _get_all_permissions(opts): 13 "Returns (codename, name) for all permissions in the given opts." 14 perms = [] 15 for action in ('add', 'change', 'delete'): 16 perms.append((_get_permission_codename(action, opts), u'Can %s %s' % (action, opts.verbose_name_raw))) 17 return perms + list(opts.permissions) 18 19 def create_permissions(app, created_models, verbosity): 20 from django.contrib.contenttypes.models import ContentType 21 from django.contrib.auth.models import Permission 22 app_models = get_models(app) 23 if not app_models: 24 return 25 for klass in app_models: 26 ctype = ContentType.objects.get_for_model(klass) 27 for codename, name in _get_all_permissions(klass._meta): 28 p, created = Permission.objects.get_or_create(codename=codename, content_type__pk=ctype.id, 29 defaults={'name': name, 'content_type': ctype}) 30 if created and verbosity >= 2: 31 print "Adding permission '%s'" % p 32 33 def create_superuser(app, created_models, verbosity, **kwargs): 34 from django.contrib.auth.models import User 35 from django.contrib.auth.create_superuser import createsuperuser as do_create 36 if User in created_models and kwargs.get('interactive', True): 37 msg = "\nYou just installed Django's auth system, which means you don't have " \ 38 "any superusers defined.\nWould you like to create one now? (yes/no): " 39 confirm = raw_input(msg) 40 while 1: 41 if confirm not in ('yes', 'no'): 42 confirm = raw_input('Please enter either "yes" or "no": ') 43 continue 44 if confirm == 'yes': 45 do_create() 46 break 47 48 dispatcher.connect(create_permissions, signal=signals.post_syncdb) 49 dispatcher.connect(create_superuser, sender=auth_app, signal=signals.post_syncdb)