misc: add |urljoin template filter (#51615)

This commit is contained in:
Lauréline Guérin 2021-03-08 09:35:03 +01:00
parent 74c9e66d6a
commit 4c6ec73981
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 25 additions and 0 deletions

View File

@ -188,6 +188,25 @@ def test_removesuffix_templatetag():
assert tmpl.render({'foo': 'XYfoo barXYXY'}) == 'XYfoo barXY'
def test_urljoin_templatefilter():
tmpl = Template('{{ foo|urljoin }}')
assert tmpl.render() == ''
assert tmpl.render({'foo': None}) == ''
assert tmpl.render({'foo': ''}) == ''
assert tmpl.render({'foo': 'http://example.com'}) == 'http://example.com'
assert tmpl.render({'foo': 'http://example.com/'}) == 'http://example.com/'
tmpl = Template('{{ foo|urljoin:bar }}')
assert tmpl.render({'foo': None, 'bar': None}) == ''
assert tmpl.render({'foo': None, 'bar': 'some/url'}) == 'some/url'
assert tmpl.render({'foo': 'http://example.com', 'bar': None}) == 'http://example.com'
assert tmpl.render({'foo': 'http://example.com', 'bar': 'some/url'}) == 'http://example.com/some/url'
assert tmpl.render({'foo': 'http://example.com/', 'bar': 'some/url'}) == 'http://example.com/some/url'
assert tmpl.render({'foo': 'http://example.com', 'bar': '/some/url'}) == 'http://example.com/some/url'
assert tmpl.render({'foo': 'http://example.com/', 'bar': '/some/url'}) == 'http://example.com/some/url'
assert tmpl.render({'foo': 'http://example.com/', 'bar': '/some/url'}) == 'http://example.com/some/url'
def test_unaccent_templatetag():
tmpl = Template('{{ foo|unaccent }}')
assert tmpl.render() == ''

View File

@ -23,6 +23,7 @@ import math
import string
import random
import unicodedata
import urllib.parse
import pyproj
from pyproj import Geod
@ -121,6 +122,11 @@ def removesuffix(string, suffix=None):
return value
@register.filter
def urljoin(base, path=None):
return urllib.parse.urljoin(base or '', path or '')
@register.filter
def unaccent(value):
if not value: