forked from 00dani/lemoncurry
Make shortlinks discoverable by displaying them on each entry, with extraneous bits trimmed out
This commit is contained in:
parent
65ff5f947a
commit
52106f1d3f
4 changed files with 37 additions and 3 deletions
|
@ -1,4 +1,4 @@
|
|||
{% load humanize markdown %}<article class="card h-entry">
|
||||
{% load friendly_url humanize markdown shortlink %}<article class="card h-entry">
|
||||
{% if entry.photo %}<img class="card-img-top u-photo" src="{{ entry.photo.url }}" />{% endif %}
|
||||
<div class="card-body">
|
||||
{% if entry.name %}<h4 class="card-title p-name">{{ entry.name }}</h4>{% endif %}
|
||||
|
@ -9,12 +9,16 @@
|
|||
<img class="u-photo" src="{{ entry.author.avatar.url }}" />
|
||||
{{ entry.author.first_name }} {{ entry.author.last_name }}
|
||||
</a>
|
||||
<a class="u-url" href="{{ entry.url }}">
|
||||
<a class="u-uid u-url" href="{{ entry.url }}">
|
||||
<time class="dt-published" datetime="{{ entry.published.isoformat }}">
|
||||
<i class="fa fa-calendar"></i>
|
||||
{{ entry.published | naturaltime }}
|
||||
</time>
|
||||
</a>
|
||||
{% shortlink entry as short %}<a class="u-url" href="{{ short }}">
|
||||
<i class="fa fa-link"></i>
|
||||
{{ short | friendly_url }}
|
||||
</a>
|
||||
{% if entry.updated != entry.published %}
|
||||
<time class="dt-updated" datetime="{{ entry.updated.isoformat }}">
|
||||
<i class="fa fa-pencil"></i>
|
||||
|
|
10
lemoncurry/templatetags/friendly_url.py
Normal file
10
lemoncurry/templatetags/friendly_url.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from django import template
|
||||
from urllib.parse import urlunparse, urlparse
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.filter
|
||||
def friendly_url(url):
|
||||
(scheme, netloc, path, params, q, fragment) = urlparse(url)
|
||||
return urlunparse(('', netloc, path, '', '', ''))
|
10
lemoncurry/templatetags/shortlink.py
Normal file
10
lemoncurry/templatetags/shortlink.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from django import template
|
||||
from django.template import Context
|
||||
from lemoncurry import utils
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def shortlink(obj):
|
||||
return utils.shortlink(obj)
|
|
@ -3,8 +3,10 @@ from accept_types import get_best_match
|
|||
from django.conf import settings
|
||||
from django.http import HttpResponse
|
||||
from os.path import join
|
||||
from shorturls import default_converter as converter
|
||||
from shorturls.templatetags.shorturl import ShortURL
|
||||
from types import SimpleNamespace
|
||||
from urllib.parse import urlencode
|
||||
from urllib.parse import urlencode, urljoin
|
||||
|
||||
cache = SimpleNamespace(package_json=None)
|
||||
|
||||
|
@ -38,3 +40,11 @@ def form_encoded_response(content):
|
|||
urlencode(content),
|
||||
content_type='application/x-www-form-urlencoded'
|
||||
)
|
||||
|
||||
|
||||
def shortlink(obj):
|
||||
prefix = ShortURL(None).get_prefix(obj)
|
||||
tinyid = converter.from_decimal(obj.pk)
|
||||
if hasattr(settings, 'SHORT_BASE_URL') and settings.SHORT_BASE_URL:
|
||||
return urljoin(settings.SHORT_BASE_URL, prefix + tinyid)
|
||||
return '/' + prefix + tinyid
|
||||
|
|
Loading…
Reference in a new issue