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!
|
||||
abort(404)
|
||||
|
||||
options = {
|
||||
'page': page,
|
||||
}
|
||||
if (page == 'index'):
|
||||
options['blog_entries'] = get_blog_entries(8)
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
entries=[]
|
||||
slugs=[]
|
||||
# walk over all directories/files
|
||||
for v in os.walk(BLOG_DIR):
|
||||
# iterate over all files
|
||||
@ -272,10 +291,12 @@ def get_blog_index():
|
||||
# ignore all non-.rst files
|
||||
if not f.endswith('.rst'):
|
||||
continue
|
||||
entries.append(safe_join(slugbase, f[:-4]))
|
||||
entries.sort()
|
||||
entries.reverse()
|
||||
return entries
|
||||
slugs.append(safe_join(slugbase, f[:-4]))
|
||||
slugs.sort()
|
||||
slugs.reverse()
|
||||
if (num > 0):
|
||||
return slugs[:num]
|
||||
return slugs
|
||||
|
||||
def get_date_from_slug(slug):
|
||||
parts = slug.split('/')
|
||||
@ -306,13 +327,7 @@ def render_blog_entry(slug):
|
||||
@app.route('/<string:lang>/blog/')
|
||||
@app.route('/<string:lang>/blog/page/<int:page>')
|
||||
def blog_index(page=0):
|
||||
slugs = get_blog_index()
|
||||
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))
|
||||
entries = get_blog_entries()
|
||||
|
||||
return render_template('blog/index.html', entries=entries)
|
||||
|
||||
|
@ -1,12 +1,5 @@
|
||||
<ul>
|
||||
<li>2012-07-30 - <a href="release-0.9.1.html">I2P 0.9.1 Released</a></li>
|
||||
<li>2012-05-02 - <a href="release-0.9.html">I2P 0.9 Released</a></li>
|
||||
<li>2012-02-27 - <a href="release-0.8.13.html">I2P 0.8.13 Released</a></li>
|
||||
<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>
|
||||
{% for entry in blog_entries -%}
|
||||
<li>{{ entry[1] }} - <a href="{{ url_for('blog_entry', slug=entry[0]) }}">{{ entry[2] }}</a></li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
|
Reference in New Issue
Block a user