Dynamically generate latest blog entries
TODO: this should probably be cached somewhere
This commit is contained in:
@ -166,8 +166,14 @@ def site_show(page='index'):
|
|||||||
# bah! those damn users all the time!
|
# bah! those damn users all the time!
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
|
options = {
|
||||||
|
'page': page,
|
||||||
|
}
|
||||||
|
if (page == 'index'):
|
||||||
|
options['blog_entries'] = get_blog_entries(8)
|
||||||
|
|
||||||
# hah!
|
# hah!
|
||||||
return render_template(name, page=page)
|
return render_template(name, **options)
|
||||||
|
|
||||||
|
|
||||||
##################
|
##################
|
||||||
@ -258,12 +264,25 @@ def downloads_redirect(protocol, file, mirror=None):
|
|||||||
#####################
|
#####################
|
||||||
# Blog helper methods
|
# Blog helper methods
|
||||||
|
|
||||||
def get_blog_index():
|
def get_blog_entries(num=0):
|
||||||
"""
|
"""
|
||||||
Returns list of valid slugs sorted by date
|
Returns the latest #num valid entries sorted by date, or all slugs if num=0.
|
||||||
|
"""
|
||||||
|
slugs = get_blog_slugs(num)
|
||||||
|
entries= []
|
||||||
|
for slug in slugs:
|
||||||
|
date = get_date_from_slug(slug)
|
||||||
|
titlepart = slug.rsplit('/', 1)[1]
|
||||||
|
title = ' '.join(titlepart.split('_'))
|
||||||
|
entries.append((slug, date, title))
|
||||||
|
return entries
|
||||||
|
|
||||||
|
def get_blog_slugs(num=0):
|
||||||
|
"""
|
||||||
|
Returns the latest #num valid slugs sorted by date, or all slugs if num=0.
|
||||||
"""
|
"""
|
||||||
# list of slugs
|
# list of slugs
|
||||||
entries=[]
|
slugs=[]
|
||||||
# walk over all directories/files
|
# walk over all directories/files
|
||||||
for v in os.walk(BLOG_DIR):
|
for v in os.walk(BLOG_DIR):
|
||||||
# iterate over all files
|
# iterate over all files
|
||||||
@ -272,10 +291,12 @@ def get_blog_index():
|
|||||||
# ignore all non-.rst files
|
# ignore all non-.rst files
|
||||||
if not f.endswith('.rst'):
|
if not f.endswith('.rst'):
|
||||||
continue
|
continue
|
||||||
entries.append(safe_join(slugbase, f[:-4]))
|
slugs.append(safe_join(slugbase, f[:-4]))
|
||||||
entries.sort()
|
slugs.sort()
|
||||||
entries.reverse()
|
slugs.reverse()
|
||||||
return entries
|
if (num > 0):
|
||||||
|
return slugs[:num]
|
||||||
|
return slugs
|
||||||
|
|
||||||
def get_date_from_slug(slug):
|
def get_date_from_slug(slug):
|
||||||
parts = slug.split('/')
|
parts = slug.split('/')
|
||||||
@ -306,13 +327,7 @@ def render_blog_entry(slug):
|
|||||||
@app.route('/<string:lang>/blog/')
|
@app.route('/<string:lang>/blog/')
|
||||||
@app.route('/<string:lang>/blog/page/<int:page>')
|
@app.route('/<string:lang>/blog/page/<int:page>')
|
||||||
def blog_index(page=0):
|
def blog_index(page=0):
|
||||||
slugs = get_blog_index()
|
entries = get_blog_entries()
|
||||||
entries= []
|
|
||||||
for slug in slugs:
|
|
||||||
date = get_date_from_slug(slug)
|
|
||||||
titlepart = slug.rsplit('/', 1)[1]
|
|
||||||
title = ' '.join(titlepart.split('_'))
|
|
||||||
entries.append((slug, date, title))
|
|
||||||
|
|
||||||
return render_template('blog/index.html', entries=entries)
|
return render_template('blog/index.html', entries=entries)
|
||||||
|
|
||||||
|
@ -1,12 +1,5 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>2012-07-30 - <a href="release-0.9.1.html">I2P 0.9.1 Released</a></li>
|
{% for entry in blog_entries -%}
|
||||||
<li>2012-05-02 - <a href="release-0.9.html">I2P 0.9 Released</a></li>
|
<li>{{ entry[1] }} - <a href="{{ url_for('blog_entry', slug=entry[0]) }}">{{ entry[2] }}</a></li>
|
||||||
<li>2012-02-27 - <a href="release-0.8.13.html">I2P 0.8.13 Released</a></li>
|
{%- endfor %}
|
||||||
<li>2012-01-06 - <a href="release-0.8.12.html">I2P 0.8.12 Released</a></li>
|
|
||||||
<li>2011-03-02 - <a href="release-0.8.4.html">I2P 0.8.4 Released</a></li>
|
|
||||||
<li>2011-03-01 - <a href='#'>Coding Moratorium & New Site </a></li>
|
|
||||||
<li>2011-01-24 - <a href="release-0.8.3.html">I2P 0.8.3 Released</a></li>
|
|
||||||
<li>2011-01-01 - <a href='#'>I2P at HOPE, Pegasus Project</a></li>
|
|
||||||
<li>2010-12-22 - <a href="release-0.8.2.html">I2P 0.8.2 Released</a></li>
|
|
||||||
<li>2010-11-15 - <a href="release-0.8.1.html">I2P 0.8.1 Released</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
Reference in New Issue
Block a user