diff options
author | Robert Martin <rdm@google.com> | 2013-05-24 17:28:48 -0400 |
---|---|---|
committer | Robert Martin <rdm@google.com> | 2013-05-24 17:35:31 -0400 |
commit | 01968ef987a38bcc9579c41e09d49a4e60059571 (patch) | |
tree | b3edc87c0781ed135ec6ce301e54e54552cc683d | |
parent | 806df3c2b0a71a85b6777e7f13e01dc115d9bef6 (diff) | |
download | askbot-01968ef987a38bcc9579c41e09d49a4e60059571.tar.gz askbot-01968ef987a38bcc9579c41e09d49a4e60059571.tar.bz2 askbot-01968ef987a38bcc9579c41e09d49a4e60059571.zip |
tweak slugify code to avoid double-unidecode
Previously, slugify would run a unidecode() on the input_text if
unicode slugs were disallowed. This caused a warning if the input_text
was already de-unicode. This splits the logic into two steps: first
demote input_text if unicode is disallowed; then, choose the appropriate
slugify function based on the result.
-rw-r--r-- | askbot/utils/slug.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/askbot/utils/slug.py b/askbot/utils/slug.py index f9e30cbf..1c95e1d4 100644 --- a/askbot/utils/slug.py +++ b/askbot/utils/slug.py @@ -50,10 +50,13 @@ def slugify(input_text, max_length=150): return input_text allow_unicode_slugs = getattr(settings, 'ALLOW_UNICODE_SLUGS', False) - if allow_unicode_slugs: + if isinstance(input_text, unicode) and not allow_unicode_slugs: + input_text = unidecode(input_text) + + if isinstance(input_text, unicode): slug = unicode_slugify(input_text) else: - slug = defaultfilters.slugify(unidecode(input_text)) + slug = defaultfilters.slugify(input_text) while len(slug) > max_length: # try to shorten word by word until len(slug) <= max_length temp = slug[:slug.rfind('-')] |