62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
 | |
| # License: GNU General Public License v3. See license.txt 
 | |
| 
 | |
| from __future__ import unicode_literals
 | |
| """
 | |
| Generate RSS feed for blog
 | |
| """
 | |
| 
 | |
| rss = u"""<?xml version="1.0" encoding="UTF-8" ?>
 | |
| <rss version="2.0">
 | |
| <channel>
 | |
|         <title>%(title)s</title>
 | |
|         <description>%(description)s</description>
 | |
|         <link>%(link)s</link>
 | |
|         <lastBuildDate>%(modified)s</lastBuildDate>
 | |
|         <pubDate>%(modified)s</pubDate>
 | |
|         <ttl>1800</ttl>
 | |
| 		%(items)s
 | |
| </channel>
 | |
| </rss>"""
 | |
| 
 | |
| rss_item = u"""
 | |
| <item>
 | |
|         <title>%(title)s</title>
 | |
|         <description>%(content)s</description>
 | |
|         <link>%(link)s</link>
 | |
|         <guid>%(name)s</guid>
 | |
|         <pubDate>%(published_on)s</pubDate>
 | |
| </item>"""
 | |
| 
 | |
| def generate():
 | |
| 	"""generate rss feed"""
 | |
| 	import os, urllib
 | |
| 	import webnotes
 | |
| 	from webnotes.model.doc import Document
 | |
| 	from webnotes.utils import escape_html
 | |
| 	
 | |
| 	host = (os.environ.get('HTTPS') and 'https://' or 'http://') + os.environ.get('HTTP_HOST')
 | |
| 	
 | |
| 	items = ''
 | |
| 	blog_list = webnotes.conn.sql("""\
 | |
| 		select page_name as name, published_on, modified, title, content from `tabBlog Post` 
 | |
| 		where ifnull(published,0)=1
 | |
| 		order by published_on desc limit 20""", as_dict=1)
 | |
| 
 | |
| 	for blog in blog_list:
 | |
| 		blog.link = urllib.quote(host + '/' + blog.name + '.html')
 | |
| 		blog.content = escape_html(blog.content or "")
 | |
| 		
 | |
| 		items += rss_item % blog
 | |
| 
 | |
| 	modified = max((blog['modified'] for blog in blog_list))
 | |
| 		
 | |
| 	ws = Document('Website Settings', 'Website Settings')
 | |
| 	return (rss % {
 | |
| 				'title': ws.title_prefix,
 | |
| 				'description': ws.description or (ws.title_prefix + ' Blog'),
 | |
| 				'modified': modified,
 | |
| 				'items': items,
 | |
| 				'link': host + '/blog.html'
 | |
| 			}).encode('utf-8', 'ignore')
 |