Package turbogears :: Package feed :: Module feed
[hide private]

Source Code for Module turbogears.feed.feed

 1  import time 
 2   
 3  import cherrypy 
 4   
 5  import turbogears 
 6  from warnings import warn 
 7   
8 -class FeedController(turbogears.controllers.Controller):
9 """ Object for generating feeds in multiple formats """ 10
11 - def __init__(self, default="atom1.0"):
12 self.default = default 13 self.formats = ["atom1.0", "atom0.3", "rss2.0"]
14
15 - def date_to_3339(self, date):
16 date = date.strftime("%Y-%m-%dT%H:%M:%SZ") 17 return date
18
19 - def date_to_822(self, date):
20 date = date.strftime("%a, %d %b %Y %H:%M:%S GMT") 21 return date
22
23 - def depr_entrys(self, feed):
24 if "entrys" in feed: 25 warn("You should use 'entries' instead of 'entrys'", 26 DeprecationWarning, 3) 27 feed['entries'] = feed['entrys'] 28 del feed['entrys']
29
30 - def format_dates(self, feed, format):
31 if format == 822: 32 convert_date = self.date_to_822 33 else: 34 convert_date = self.date_to_3339 35 if feed.has_key('updated'): 36 feed["updated"] = convert_date(feed["updated"]) 37 self.depr_entrys(feed) 38 for entry in feed['entries']: 39 if entry.has_key('updated'): 40 entry["updated"] = convert_date(entry["updated"]) 41 if entry.has_key('published'): 42 entry["published"] = convert_date(entry["published"]) 43 return feed
44
45 - def index(self):
46 raise cherrypy.HTTPRedirect(turbogears.url("%s" % self.default))
47 index = turbogears.expose()(index) 48
49 - def atom1_0(self, **kwargs):
50 feed = self.get_feed_data(**kwargs) 51 self.format_dates(feed, 3339) 52 feed["href"] = turbogears.url("/") + "atom1.0" 53 self.depr_entrys(feed) 54 return feed
55 atom1_0 = turbogears.expose(template="turbogears.feed.atom1_0", 56 format="xml", content_type="application/atom+xml")(atom1_0) 57
58 - def atom0_3(self, **kwargs):
59 feed = self.get_feed_data(**kwargs) 60 self.format_dates(feed, 3339) 61 feed["href"] = turbogears.url("/") + "atom0.3" 62 self.depr_entrys(feed) 63 return feed
64 atom0_3 = turbogears.expose(template="turbogears.feed.atom0_3", 65 format="xml", content_type="application/atom+xml")(atom0_3) 66
67 - def rss2_0(self, **kwargs):
68 feed = self.get_feed_data(**kwargs) 69 self.format_dates(feed, 822) 70 self.depr_entrys(feed) 71 return feed
72 rss2_0 = turbogears.expose(template="turbogears.feed.rss2_0", 73 format="xml", content_type="application/rss+xml")(rss2_0)
74