/shabti/templates/shenu/+package+/lib/feed/feed.py_tmpl
Unknown | 75 lines | 65 code | 10 blank | 0 comment | 0 complexity | 1c8cb85abd67d095695c33b3056498b3 MD5 | raw file
1import time
2from warnings import warn
3import pylons
4from pylons import request
5from pylons.controllers import *
6from pylons.controllers.util import redirect
7from {{package}}.lib.base import BaseController, render
8from {{package}}.model import *
9import {{package}}.lib.helpers as h
10
11import logging
12log = logging.getLogger(__name__)
13
14class FeedControllerBase(BaseController):
15 """ Object for generating feeds in multiple formats """
16
17 def __init__(self, default="atom1.0"):
18 self.default = default
19 self.formats = ["atom1.0", "rss2.0"]
20
21 def date_to_3339(self, date):
22 date = date.strftime("%Y-%m-%dT%H:%M:%SZ")
23 return date
24
25 def date_to_822(self, date):
26 date = date.strftime("%a, %d %b %Y %H:%M:%S GMT")
27 return date
28
29 def depr_entrys(self, feed):
30 if "entrys" in feed:
31 warn("You should use 'entries' instead of 'entrys'",
32 DeprecationWarning, 3)
33 feed['entries'] = feed['entrys']
34 del feed['entrys']
35
36 def format_dates(self, feed, format):
37 if format == 822:
38 convert_date = self.date_to_822
39 else:
40 convert_date = self.date_to_3339
41 if feed.has_key('updated'):
42 feed["updated"] = convert_date(feed["updated"])
43 self.depr_entrys(feed)
44 for entry in feed['entries']:
45 if entry.has_key('updated'):
46 entry["updated"] = convert_date(entry["updated"])
47 if entry.has_key('published'):
48 entry["published"] = convert_date(entry["published"])
49 return feed
50
51 def index(self):
52 return redirect("%s" % self.default)
53
54 def atom1_0(self, **kwargs):
55 feed = self.get_feed_data(**kwargs)
56 self.format_dates(feed, 3339)
57 feed["href"] = "%s/" % feed['feedmeta']['link']
58 self.depr_entrys(feed)
59 c.feedmeta = feed['feedmeta']
60 c.entries = feed['entries']
61 return render("feed/atom1_0.mak")
62 # ,
63 # content_type="application/atom+xml",
64 # feed)
65
66 def rss2_0(self, **kwargs):
67 feed = self.get_feed_data(**kwargs)
68 self.format_dates(feed, 822)
69 self.depr_entrys(feed)
70 c.feedmeta = feed['feedmeta']
71 c.entries = feed['entries']
72 return render("feed/rss2_0.mak")
73 # ,
74 # content_type="application/rss+xml",
75 # feed)