# HG changeset patch # User Thierry Florac # Date 1523614998 -7200 # Node ID d6c77b2b5c4b51bc84dc00dfadb48f1a52ce1e61 # Parent 0013ddcfdc375ca15462be51a54355281c01bc62 Added "generate_url" function diff -r 0013ddcfdc37 -r d6c77b2b5c4b src/pyams_utils/url.py --- a/src/pyams_utils/url.py Thu Apr 12 11:21:59 2018 +0200 +++ b/src/pyams_utils/url.py Fri Apr 13 12:23:18 2018 +0200 @@ -16,16 +16,27 @@ # import standard library # import interfaces -from persistent.interfaces import IPersistent from pyams_utils.interfaces.tales import ITALESExtension # import packages from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config +from pyams_utils.unicode import translate_string from pyramid.encode import url_quote, urlencode from pyramid.url import resource_url, QUERY_SAFE from zope.interface import Interface +def generate_url(title): + """Generate an SEO-friendly content URL from it's title + + The original title is translated to remove accents, converted to lowercase, and words + shorter than three characters are removed; terms are joined by hyphens. + """ + return '-'.join(filter(lambda x: len(x) > 2, + translate_string(title, escape_slashes=True, force_lower=True, spaces='-', + remove_punctuation=True, keep_chars='-').split('-'))) + + def absolute_url(context, request, view_name=None, query=None): """Get resource absolute_url