Browse Source

Use unidecode library for slugs instead of ascii normalisation

Casper Van Gheluwe 10 years ago
parent
commit
b334730d47
3 changed files with 8 additions and 5 deletions
  1. 5 4
      flaskbb/utils/helpers.py
  2. 1 0
      requirements.txt
  3. 2 1
      setup.py

+ 5 - 4
flaskbb/utils/helpers.py

@@ -12,7 +12,6 @@ import re
 import time
 import itertools
 import operator
-from unicodedata import normalize
 from datetime import datetime, timedelta
 
 from flask import session
@@ -20,7 +19,8 @@ from flask.ext.themes2 import render_theme_template
 from flask.ext.login import current_user
 
 from postmarkup import render_bbcode
-from flaskbb._compat import range_method
+import unidecode
+from flaskbb._compat import range_method, text_type
 
 from flaskbb.extensions import redis_store
 from flaskbb.utils.settings import flaskbb_config
@@ -35,12 +35,13 @@ def slugify(text, delim=u'-'):
    :param text: The text which should be slugified
    :param delim: Default "-". The delimeter for whitespace
     """
+
+    text = unidecode.unidecode(text)
     result = []
     for word in _punct_re.split(text.lower()):
-        word = normalize('NFKD', word).encode('ascii', 'ignore')
         if word:
             result.append(word)
-    return str(delim.join(str(result)))
+    return text_type(delim.join(result))
 
 
 def render_template(template, **context):

+ 1 - 0
requirements.txt

@@ -29,5 +29,6 @@ pytest-random==0.02
 redis==2.10.3
 simplejson==3.6.4
 flask-redis==0.0.6
+unidecode==0.04.16
 https://github.com/frol/postmarkup/tarball/master#egg=postmarkup
 https://github.com/jshipley/Flask-WhooshAlchemy/archive/master.zip#egg=Flask-Whooshalchemy

+ 2 - 1
setup.py

@@ -69,7 +69,8 @@ setup(
         'pytest-cov',
         'redis',
         'simplejson',
-        'postmarkup'
+        'postmarkup',
+        'unidecode'
     ],
     dependency_links=[
         'https://github.com/frol/postmarkup/tarball/master#egg=postmarkup',