Opened 13 years ago
Closed 13 years ago
#17185 closed Bug (duplicate)
[patch] manage.py createsuperuser fails when locale is not set
Reported by: | Niels Poppe | Owned by: | nobody |
---|---|---|---|
Component: | contrib.auth | Version: | 1.3 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
When locale(1) is like
LANG=
LC_CTYPE="C"
LC_COLLATE="C"
LC_TIME="C"
LC_NUMERIC="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=
then "./manage.py createsuperuser" results in a traceback ending
File "/usr/lib/py-dev/django-trunk/django/contrib/auth/management/__init__.py", line 85, in get_system_username return getpass.getuser().decode(locale.getdefaultlocale()[1]) TypeError: decode() argument 1 must be string, not None
Since get_system_username() tries to guard against restricted environments like being run in a chroot() environment chances are there is no sane LANG environment either — resulting in getdefaultlocale() returning (None, None).
Assuming ascii encoding is probably okay because UnicodeDecodeError is catched anyway. Calling decode() with ‘ignore’ or not is a matter of taste.
See attached patch.
Attachments (1)
Change History (2)
by , 13 years ago
Attachment: | get_username.patch added |
---|
comment:1 by , 13 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
patches get_system_username() to function correctly when locale is not set up