Fixed #17457 -- Marked strings used in hash descriptions for translation.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17270 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
fe876f0119
commit
d72c0bdc46
|
@ -4,7 +4,7 @@ from django.template import loader
|
||||||
from django.utils.encoding import smart_str
|
from django.utils.encoding import smart_str
|
||||||
from django.utils.http import int_to_base36
|
from django.utils.http import int_to_base36
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext, ugettext_lazy as _
|
||||||
|
|
||||||
from django.contrib.auth import authenticate
|
from django.contrib.auth import authenticate
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
@ -36,7 +36,7 @@ class ReadOnlyPasswordHashWidget(forms.Widget):
|
||||||
|
|
||||||
summary = ""
|
summary = ""
|
||||||
for key, value in hasher.safe_summary(encoded).iteritems():
|
for key, value in hasher.safe_summary(encoded).iteritems():
|
||||||
summary += "<strong>%(key)s</strong>: %(value)s " % {"key": key, "value": value}
|
summary += "<strong>%(key)s</strong>: %(value)s " % {"key": ugettext(key), "value": value}
|
||||||
|
|
||||||
return mark_safe("<div%(attrs)s>%(summary)s</div>" % {"attrs": flatatt(final_attrs), "summary": summary})
|
return mark_safe("<div%(attrs)s>%(summary)s</div>" % {"attrs": flatatt(final_attrs), "summary": summary})
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ from django.utils.encoding import smart_str
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.utils.crypto import (
|
from django.utils.crypto import (
|
||||||
pbkdf2, constant_time_compare, get_random_string)
|
pbkdf2, constant_time_compare, get_random_string)
|
||||||
|
from django.utils.translation import ugettext_noop as _
|
||||||
|
|
||||||
|
|
||||||
UNUSABLE_PASSWORD = '!' # This will never be a valid encoded hash
|
UNUSABLE_PASSWORD = '!' # This will never be a valid encoded hash
|
||||||
|
@ -212,10 +213,10 @@ class PBKDF2PasswordHasher(BasePasswordHasher):
|
||||||
algorithm, iterations, salt, hash = encoded.split('$', 3)
|
algorithm, iterations, salt, hash = encoded.split('$', 3)
|
||||||
assert algorithm == self.algorithm
|
assert algorithm == self.algorithm
|
||||||
return SortedDict([
|
return SortedDict([
|
||||||
('algorithm', algorithm),
|
(_('algorithm'), algorithm),
|
||||||
('iterations', iterations),
|
(_('iterations'), iterations),
|
||||||
('salt', mask_hash(salt)),
|
(_('salt'), mask_hash(salt)),
|
||||||
('hash', mask_hash(hash)),
|
(_('hash'), mask_hash(hash)),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
@ -263,10 +264,10 @@ class BCryptPasswordHasher(BasePasswordHasher):
|
||||||
assert algorithm == self.algorithm
|
assert algorithm == self.algorithm
|
||||||
salt, checksum = data[:22], data[22:]
|
salt, checksum = data[:22], data[22:]
|
||||||
return SortedDict([
|
return SortedDict([
|
||||||
('algorithm', algorithm),
|
(_('algorithm'), algorithm),
|
||||||
('work factor', work_factor),
|
(_('work factor'), work_factor),
|
||||||
('salt', mask_hash(salt)),
|
(_('salt'), mask_hash(salt)),
|
||||||
('checksum', mask_hash(checksum)),
|
(_('checksum'), mask_hash(checksum)),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
@ -292,9 +293,9 @@ class SHA1PasswordHasher(BasePasswordHasher):
|
||||||
algorithm, salt, hash = encoded.split('$', 2)
|
algorithm, salt, hash = encoded.split('$', 2)
|
||||||
assert algorithm == self.algorithm
|
assert algorithm == self.algorithm
|
||||||
return SortedDict([
|
return SortedDict([
|
||||||
('algorithm', algorithm),
|
(_('algorithm'), algorithm),
|
||||||
('salt', mask_hash(salt, show=2)),
|
(_('salt'), mask_hash(salt, show=2)),
|
||||||
('hash', mask_hash(hash)),
|
(_('hash'), mask_hash(hash)),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
@ -321,8 +322,8 @@ class MD5PasswordHasher(BasePasswordHasher):
|
||||||
|
|
||||||
def safe_summary(self, encoded):
|
def safe_summary(self, encoded):
|
||||||
return SortedDict([
|
return SortedDict([
|
||||||
('algorithm', self.algorithm),
|
(_('algorithm'), self.algorithm),
|
||||||
('hash', mask_hash(encoded, show=3)),
|
(_('hash'), mask_hash(encoded, show=3)),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
@ -355,8 +356,8 @@ class CryptPasswordHasher(BasePasswordHasher):
|
||||||
algorithm, salt, data = encoded.split('$', 2)
|
algorithm, salt, data = encoded.split('$', 2)
|
||||||
assert algorithm == self.algorithm
|
assert algorithm == self.algorithm
|
||||||
return SortedDict([
|
return SortedDict([
|
||||||
('algorithm', algorithm),
|
(_('algorithm'), algorithm),
|
||||||
('salt', salt),
|
(_('salt'), salt),
|
||||||
('hash', mask_hash(data, show=3)),
|
(_('hash'), mask_hash(data, show=3)),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue