Shortlinks for blog posts
This commit is contained in:
@@ -43,6 +43,11 @@ with this suffix will be visible at their post URL, but will not be shown in
|
|||||||
the blog index. To publish the draft post, change the filename to remove the
|
the blog index. To publish the draft post, change the filename to remove the
|
||||||
'.draft' suffix.
|
'.draft' suffix.
|
||||||
|
|
||||||
|
Creating shortlinks
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
See the comments in shortlinks.py.
|
||||||
|
|
||||||
How to make a release notice
|
How to make a release notice
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
|
12
i2p2www/blog/shortlinks.py
Normal file
12
i2p2www/blog/shortlinks.py
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
############
|
||||||
|
# Shortlinks
|
||||||
|
#
|
||||||
|
# To create the URL https://geti2p.net/b/<shortlink>
|
||||||
|
# linking to https://geti2p.net/en/blog/post/<slug>,
|
||||||
|
# add a new line below containing
|
||||||
|
#
|
||||||
|
# '<shortlink>': '<slug>',
|
||||||
|
|
||||||
|
BLOG_SHORTLINKS = {
|
||||||
|
'toronto': '2015/05/25/Toronto-Meetup',
|
||||||
|
}
|
@@ -1,8 +1,9 @@
|
|||||||
from flask import abort, render_template, request
|
from flask import abort, g, redirect, render_template, request, url_for
|
||||||
from werkzeug.contrib.atom import AtomFeed
|
from werkzeug.contrib.atom import AtomFeed
|
||||||
|
|
||||||
from i2p2www import BLOG_DIR, BLOG_POSTS_PER_FEED, BLOG_POSTS_PER_PAGE, cache
|
from i2p2www import BLOG_DIR, BLOG_POSTS_PER_FEED, BLOG_POSTS_PER_PAGE, cache
|
||||||
from i2p2www.blog.helpers import get_blog_posts, get_blog_feed_items, get_date_from_slug, get_metadata_from_meta, render_blog_post
|
from i2p2www.blog.helpers import get_blog_posts, get_blog_feed_items, get_date_from_slug, get_metadata_from_meta, render_blog_post
|
||||||
|
from i2p2www.blog.shortlinks import BLOG_SHORTLINKS
|
||||||
from i2p2www.helpers import Pagination, get_for_page
|
from i2p2www.helpers import Pagination, get_for_page
|
||||||
|
|
||||||
|
|
||||||
@@ -38,6 +39,19 @@ def blog_post(slug):
|
|||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
|
@cache.memoize(600)
|
||||||
|
def blog_post_shortlink(shortlink):
|
||||||
|
lang = 'en'
|
||||||
|
if hasattr(g, 'lang') and g.lang:
|
||||||
|
lang = g.lang
|
||||||
|
|
||||||
|
try:
|
||||||
|
slug = BLOG_SHORTLINKS[shortlink]
|
||||||
|
except KeyError:
|
||||||
|
abort(404)
|
||||||
|
|
||||||
|
return redirect(url_for('blog_post', lang=lang, slug=slug))
|
||||||
|
|
||||||
def blog_rss():
|
def blog_rss():
|
||||||
# TODO: implement
|
# TODO: implement
|
||||||
pass
|
pass
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
{%- else -%}{{ url_for('blog_index', lang=lang) }}
|
{%- else -%}{{ url_for('blog_index', lang=lang) }}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{%- elif request.endpoint == 'blog_post' -%}{{ url_for('blog_post', lang=lang, slug=slug) }}
|
{%- elif request.endpoint == 'blog_post' -%}{{ url_for('blog_post', lang=lang, slug=slug) }}
|
||||||
|
{%- elif request.endpoint == 'blog_post_shortlink' -%}{{ url_for('blog_post_shortlink', lang=lang, shortlink=shortlink) }}
|
||||||
{%- elif request.endpoint == 'meetings_show' -%}{{ url_for('meetings_show', lang=lang, id=id) }}
|
{%- elif request.endpoint == 'meetings_show' -%}{{ url_for('meetings_show', lang=lang, id=id) }}
|
||||||
{%- elif request.endpoint == 'downloads_debian' -%}{{ url_for('downloads_debian', lang=lang) }}
|
{%- elif request.endpoint == 'downloads_debian' -%}{{ url_for('downloads_debian', lang=lang) }}
|
||||||
{%- elif request.endpoint == 'downloads_select' -%}{{ url_for('downloads_select', lang=lang, version=version, file=file) }}
|
{%- elif request.endpoint == 'downloads_select' -%}{{ url_for('downloads_select', lang=lang, version=version, file=file) }}
|
||||||
|
@@ -59,6 +59,7 @@ url('/<lang:lang>/blog/post/<path:slug>', 'blog.views.blog_post')
|
|||||||
url('/<lang:lang>/feed/blog/rss', 'blog.views.blog_rss')
|
url('/<lang:lang>/feed/blog/rss', 'blog.views.blog_rss')
|
||||||
url('/<lang:lang>/feed/blog/atom', 'blog.views.blog_atom')
|
url('/<lang:lang>/feed/blog/atom', 'blog.views.blog_atom')
|
||||||
url('/<lang:lang>/feed/blog/category/<string:category>/atom', 'blog.views.blog_atom')
|
url('/<lang:lang>/feed/blog/category/<string:category>/atom', 'blog.views.blog_atom')
|
||||||
|
url('/b/<string:shortlink>', 'blog.views.blog_post_shortlink')
|
||||||
|
|
||||||
url('/<lang:lang>/meetings/', 'meetings.views.meetings_index', defaults={'page': 1})
|
url('/<lang:lang>/meetings/', 'meetings.views.meetings_index', defaults={'page': 1})
|
||||||
url('/<lang:lang>/meetings/page/<int:page>', 'meetings.views.meetings_index')
|
url('/<lang:lang>/meetings/page/<int:page>', 'meetings.views.meetings_index')
|
||||||
|
Reference in New Issue
Block a user