2 Helper function for creating superusers in the authentication system.
4 If run from the command line, this module lets you create a superuser
8 from django
.core
import validators
9 from django
.contrib
.auth
.models
import User
14 def createsuperuser(username
=None, email
=None, password
=None):
16 Helper function for creating a superuser from the command line. All
17 arguments are optional and will be prompted-for if invalid or not given.
24 # Determine the current system user's username, to use as a default.
25 default_username
= pwd
.getpwuid(os
.getuid())[0].replace(' ', '').lower()
27 # Determine whether the default username is taken, so we don't display
31 User
.objects
.get(username
=default_username
)
32 except User
.DoesNotExist
:
40 input_msg
= 'Username'
42 input_msg
+= ' (Leave blank to use %r)' % default_username
43 username
= raw_input(input_msg
+ ': ')
44 if default_username
and username
== '':
45 username
= default_username
46 if not username
.isalnum():
47 sys
.stderr
.write("Error: That username is invalid. Use only letters, digits and underscores.\n")
51 User
.objects
.get(username
=username
)
52 except User
.DoesNotExist
:
55 sys
.stderr
.write("Error: That username is already taken.\n")
59 email
= raw_input('E-mail address: ')
61 validators
.isValidEmail(email
, None)
62 except validators
.ValidationError
:
63 sys
.stderr
.write("Error: That e-mail address is invalid.\n")
69 password
= getpass
.getpass()
70 password2
= getpass
.getpass('Password (again): ')
71 if password
!= password2
:
72 sys
.stderr
.write("Error: Your passwords didn't match.\n")
75 if password
.strip() == '':
76 sys
.stderr
.write("Error: Blank passwords aren't allowed.\n")
80 except KeyboardInterrupt:
81 sys
.stderr
.write("\nOperation cancelled.\n")
83 u
= User
.objects
.create_user(username
, email
, password
)
88 print "Superuser created successfully."
90 if __name__
== "__main__":