templatetags: Add fill_url.
This gives templates an easy way to generate full URLs using host_url.
This commit is contained in:
parent
4758b8bcfd
commit
87961c6cee
1 changed files with 20 additions and 0 deletions
20
www/conservancy/apps/news/templatetags/fill_url.py
Normal file
20
www/conservancy/apps/news/templatetags/fill_url.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import urlparse
|
||||||
|
|
||||||
|
from django import template
|
||||||
|
|
||||||
|
register = template.Library()
|
||||||
|
|
||||||
|
@register.filter(name='fill_url')
|
||||||
|
def fill_url(given_url, base_url):
|
||||||
|
""""Fill out" missing pieces of one URL from another.
|
||||||
|
|
||||||
|
This function parses the given URL, and if it's missing any pieces
|
||||||
|
(scheme, netloc, etc.), it fills those in from the base URL.
|
||||||
|
Typical usage is "/URL/path"|fill_url:"https://hostname/"
|
||||||
|
to generate "https://hostname/URL/path".
|
||||||
|
"""
|
||||||
|
given_parts = urlparse.urlsplit(given_url)
|
||||||
|
base_parts = urlparse.urlsplit(base_url)
|
||||||
|
return urlparse.urlunsplit(
|
||||||
|
given_part or base_part for given_part, base_part in zip(given_parts, base_parts)
|
||||||
|
)
|
Loading…
Reference in a new issue