Added a modified slugify function and template filter, which converts slashes to dashes instead of eliding them. This is necessary in order to be able to distinguish the slugified room names like 'Schinkel I/II' from 'Schinkel III'.
- Legacy-Id: 11589
This commit is contained in:
parent
bc54874f57
commit
402a099e4e
18
ietf/utils/templatetags/textfilters.py
Normal file
18
ietf/utils/templatetags/textfilters.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
from django.template.base import Library
|
||||
from django.template.defaultfilters import stringfilter
|
||||
|
||||
from ietf.utils.text import xslugify as _xslugify
|
||||
|
||||
register = Library()
|
||||
|
||||
@register.filter(is_safe=True)
|
||||
@stringfilter
|
||||
def xslugify(value):
|
||||
"""
|
||||
Converts to ASCII. Converts spaces to hyphens. Removes characters that
|
||||
aren't alphanumerics, underscores, slashes, or hyphens. Converts to
|
||||
lowercase. Also strips leading and trailing whitespace.
|
||||
"""
|
||||
return _xslugify(value)
|
20
ietf/utils/text.py
Normal file
20
ietf/utils/text.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
import re
|
||||
import unicodedata
|
||||
|
||||
from django.utils.functional import allow_lazy
|
||||
from django.utils import six
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
def xslugify(value):
|
||||
"""
|
||||
Converts to ASCII. Converts spaces to hyphens. Removes characters that
|
||||
aren't alphanumerics, underscores, slash, or hyphens. Converts to
|
||||
lowercase. Also strips leading and trailing whitespace.
|
||||
(I.e., does the same as slugify, but also converts slashes to dashes.)
|
||||
"""
|
||||
value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore').decode('ascii')
|
||||
value = re.sub('[^\w\s/-]', '', value).strip().lower()
|
||||
return mark_safe(re.sub('[-\s/]+', '-', value))
|
||||
xslugify = allow_lazy(xslugify, six.text_type)
|
Loading…
Reference in a new issue