[Hejes-devel] [924] - blog/feed.rss: corrected URLs in feed; using custom feed generator (built-in is buggy); using RFC 2822 datetime format;
hejes-devel at nytud.hu
hejes-devel at nytud.hu
Fri Sep 6 00:51:58 CEST 2013
Revision: 924
Author: mihaltz
Date: 2013-09-06 00:51:58 +0200 (Fri, 06 Sep 2013)
Log Message:
-----------
- blog/feed.rss: corrected URLs in feed; using custom feed generator (built-in is buggy); using RFC 2822 datetime format;
killed HTML tags in description fields; validated feed with http://validator.w3.org/feed/check.cgi
Modified Paths:
--------------
trunk/web2py/applications/helyesiras_webdev/controllers/blog.py
trunk/web2py/applications/helyesiras_webdev/models/dbblog.py
trunk/web2py/applications/helyesiras_webdev/progress.log
Added Paths:
-----------
trunk/web2py/applications/helyesiras_webdev/views/blog/feed.rss
Modified: trunk/web2py/applications/helyesiras_webdev/controllers/blog.py
===================================================================
--- trunk/web2py/applications/helyesiras_webdev/controllers/blog.py 2013-09-05 13:46:19 UTC (rev 923)
+++ trunk/web2py/applications/helyesiras_webdev/controllers/blog.py 2013-09-05 22:51:58 UTC (rev 924)
@@ -5,9 +5,11 @@
@author MM
"""
+from email.Utils import formatdate
+from time import mktime
+import re
from util import safeint
-
def index():
"""Starting page for the blog.
returns following keys:
@@ -79,18 +81,21 @@
def feed():
- """Return a dict that can be rendered by views/generic.rss as the RSS feed of the blog. URL is .../blog/feed.rss"""
+ """Return a dict that can be rendered by views/blog/feed.rss as the RSS feed of the blog. URL is http://<host_name>/<application_name>/blog/feed.rss.
+ Note: the builtin views/generic.rss could be used instead the custom views/blog/feed.rss, but at this time there's a (python) bug preventing it, see https://groups.google.com/forum/#!msg/web2py/8ZwVMKS69Sg/2ijXe2eKGBgJ
+ """
entries = []
posts = dbblog(dbblog.posts.category == dbblog.categories.id).select(orderby=~dbblog.posts.created_on, limitby=(0, 15))
for row in posts:
post = row.posts
- entries.append(dict(title='Cim',# post.title,
- link=URL(c='blog', f='show', args=[post.slug], host=True),
- description='Leiras', #MARKMIN(post.body.split('\n')[0]).xml(),
- created_on=str(post.created_on)
+ entries.append(dict(title=post.title,
+ link=URL(c='blog', f='show', args=[post.slug], host=True, extension=''),
+ description=re.sub('<[^<>]+>', '', MARKMIN(post.body.split('\n')[0]).xml()),
+ created_on=formatdate(mktime(post.created_on.timetuple()), localtime=True)
))
- return dict(title="Helyesiras.mta.hu blog",
- link="http://helyesiras.mta.hu/helyesiras/blog",
- description="A helyesiras.mta.hu oldal hivatalos blogja",
+ return dict(title=u"Helyesiras.mta.hu blog",
+ link=u"http://helyesiras.mta.hu/helyesiras/blog",
+ description=u"A helyesiras.mta.hu oldal hivatalos blogja",
+ created_on=formatdate(mktime(request.now.timetuple()), localtime=True),
entries=entries)
Modified: trunk/web2py/applications/helyesiras_webdev/models/dbblog.py
===================================================================
--- trunk/web2py/applications/helyesiras_webdev/models/dbblog.py 2013-09-05 13:46:19 UTC (rev 923)
+++ trunk/web2py/applications/helyesiras_webdev/models/dbblog.py 2013-09-05 22:51:58 UTC (rev 924)
@@ -5,7 +5,6 @@
@author: MM
"""
-
def create_index_if_not_exists(db, table, keyname, column, unique=False):
"""Check if index keyname on db.table.column exists.
If not, execute sql statement 'CREATE (UNIQUE) INDEX...' and return True, otherwise return False.
Modified: trunk/web2py/applications/helyesiras_webdev/progress.log
===================================================================
--- trunk/web2py/applications/helyesiras_webdev/progress.log 2013-09-05 13:46:19 UTC (rev 923)
+++ trunk/web2py/applications/helyesiras_webdev/progress.log 2013-09-05 22:51:58 UTC (rev 924)
@@ -778,3 +778,5 @@
[2013-08-29 12:52:56] EDIT helyesiras_webdev/controllers/blog.py: 0
[2013-08-29 12:53:58] EDIT helyesiras_webdev/controllers/blog.py: 0
[2013-08-29 13:00:38] EDIT helyesiras_webdev/controllers/blog.py: 0
+[2013-09-05 21:58:44] CREATE blog/feed.rss: 0
+[2013-09-05 21:58:51] EDIT helyesiras_webdev/views/blog/feed.rss: 0
Added: trunk/web2py/applications/helyesiras_webdev/views/blog/feed.rss
===================================================================
--- trunk/web2py/applications/helyesiras_webdev/views/blog/feed.rss (rev 0)
+++ trunk/web2py/applications/helyesiras_webdev/views/blog/feed.rss 2013-09-05 22:51:58 UTC (rev 924)
@@ -0,0 +1,27 @@
+{{
+def toutf8(s):
+ if isinstance(s, unicode):
+ return s.encode('utf8', 'replace')
+ return s
+pass
+}}
+{{
+
+# Note: generic.rss should take care of everything, but it's buggy :(
+# See https://groups.google.com/forum/#!msg/web2py/8ZwVMKS69Sg/2ijXe2eKGBgJ
+
+response.headers['Content-Type'] = 'application/rss+xml; charset=UTF-8'
+
+response.write('<?xml version="1.0" encoding="utf-8"?>\n', escape=False)
+response.write('<rss version="2.0"><channel><title>{0}</title><link>{1}</link><description>{2}</description><lastBuildDate>{3}</lastBuildDate>\n'.format( response._vars.get('title', '(notitle)'), response._vars.get('link', ''), response._vars.get('description', '(nodescription)'), response._vars.get('created_on', '')), escape=False)
+response.write('<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n', escape=False)
+
+for item in response._vars.get('entries', []):
+ data = (item.get('title', '(notitle)'), item.get('link', ''), item.get('description', '(nodescription)'), item.get('created_on', ''))
+ data2 = [toutf8(x) for x in data]
+ response.write('<item><title>{0}</title><link>{1}</link><description>{2}</description><pubDate>{3}</pubDate></item>\n'.format(*data2), escape=False)
+pass
+
+response.write('</channel></rss>', escape=False)
+}}
+
More information about the Hejes-devel
mailing list