Django

Code

Ticket #798: createsuperuser.patch

File createsuperuser.patch, 3.4 kB (added by bjorn@exoweb.net, 3 years ago)

Patch to createsuperuser

  • django/bin/django-admin.py

    old new  
    8181        translation.activate('en-us') 
    8282 
    8383    if action in ('createsuperuser', 'init', 'validate'): 
    84         ACTION_MAPPING[action](
     84        ACTION_MAPPING[action](*args[1:]
    8585    elif action == 'inspectdb': 
    8686        try: 
    8787            param = args[1] 
  • django/core/management.py

    old new  
    480480startapp.help_doc = "Creates a Django app directory structure for the given app name in the current directory." 
    481481startapp.args = "[appname]" 
    482482 
    483 def createsuperuser(): 
     483def createsuperuser(username=None, email=None, password=None): 
    484484    "Creates a superuser account." 
    485485    from django.core import validators 
    486486    from django.models.auth import users 
    487487    import getpass 
    488488    try: 
    489489        while 1: 
    490             username = raw_input('Username (only letters, digits and underscores): ') 
     490            if not username: username = raw_input('Username (only letters, digits and underscores): ') 
    491491            if not username.isalnum(): 
    492                 sys.stderr.write("Error: That username is invalid.\n") 
    493                 continu
     492                sys.stderr.write("Error: That username is invalid\n") 
     493                username = Non
    494494            try: 
    495495                users.get_object(username__exact=username) 
    496496            except users.UserDoesNotExist: 
    497497                break 
    498498            else: 
    499                 sys.stderr.write("Error: That username is already taken.\n") 
     499                sys.stderr.write("Error: That username is already taken\n") 
     500                username = None 
    500501        while 1: 
    501             email = raw_input('E-mail address: ') 
     502            if not email: email = raw_input('E-mail address: ') 
    502503            try: 
    503504                validators.isValidEmail(email, None) 
    504505            except validators.ValidationError: 
    505                 sys.stderr.write("Error: That e-mail address is invalid.\n") 
     506                sys.stderr.write("Error: That e-mail address is invalid\n") 
     507                email = None 
    506508            else: 
    507509                break 
    508510        while 1: 
    509             password = getpass.getpass() 
    510             password2 = getpass.getpass('Password (again): ') 
    511             if password != password2: 
    512                 sys.stderr.write("Error: Your passwords didn't match.\n") 
    513                 continue 
     511            if not password: 
     512                password = getpass.getpass() 
     513                password2 = getpass.getpass('Password (again): ') 
     514                if password != password2: 
     515                    sys.stderr.write("Error: Your passwords didn't match.\n") 
     516                    continue 
    514517            if password.strip() == '': 
    515518                sys.stderr.write("Error: Blank passwords aren't allowed.\n") 
     519                password = None 
    516520                continue 
    517521            break 
    518522    except KeyboardInterrupt: 
     
    524528    u.is_superuser = True 
    525529    u.save() 
    526530    print "User created successfully." 
    527 createsuperuser.args = '
     531createsuperuser.args = '[optional username, email, password]
    528532 
    529533def inspectdb(db_name): 
    530534    "Generator that introspects the tables in the given database name and returns a Django model, one line at a time."